Отображение текста, считанного из Wordа
От: Коконцева С.Ю.  
Дата: 29.08.02 07:38
Оценка:
Проблема в том, что в строке, считанной из Wordа в Stringовую переменную в Delphi одновременно содержатся буквы и символы.
В результате — не могу адекватно отобразить полученную строчку в Text'е компонент...
Re: Отображение текста, считанного из Wordа
От: Сергей Лисовский  
Дата: 29.08.02 08:35
Оценка:
Здравствуйте Коконцева С.Ю., Вы писали:

КС>Проблема в том, что в строке, считанной из Wordа в Stringовую переменную в Delphi одновременно содержатся буквы и символы.

КС>В результате — не могу адекватно отобразить полученную строчку в Text'е компонент...

А если в WideString читать, тоже самое?
Сергей.
Re[2]: Отображение текста, считанного из Wordа
От: Hacker_Delphi Россия  
Дата: 29.08.02 09:05
Оценка: 2 (1)
Здравствуйте Сергей Лисовский, Вы писали:

СЛ>Здравствуйте Коконцева С.Ю., Вы писали:


КС>>Проблема в том, что в строке, считанной из Wordа в Stringовую переменную в Delphi одновременно содержатся буквы и символы.

КС>>В результате — не могу адекватно отобразить полученную строчку в Text'е компонент...

СЛ>А если в WideString читать, тоже самое?


Естессно..
Нужно не просто дергать текст из Ворда, а дергать его через Words.Count, Words.Item(), что-ли...
там в хелпе по Ворд-Басику есть такое... и проверять, если первый символ слова < #32 — все, приплыли (пропускаем слово). вот и все...
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[3]: Отображение текста, считанного из Wordа
От: Сергей Лисовский  
Дата: 29.08.02 09:43
Оценка:
Здравствуйте Hacker_Delphi, Вы писали:

HD>Нужно не просто дергать текст из Ворда, а дергать его через Words.Count, Words.Item(), что-ли...

HD>там в хелпе по Ворд-Басику есть такое... и проверять, если первый символ слова < #32 — все, приплыли (пропускаем слово). вот и все...

Объясни подробнее про первый символ слова, а то у меня такой кодьнормально работает безо всяких проверок:
procedure TForm1.Button3Click(Sender: TObject);
var
  Word: Variant;
  s: string;
begin
  Word := CreateOleObject( 'Word.Application.9' );
  Word.Documents.Open( 'C:\Projects\tst\excel\Баги.doc' );
  Word.Visible := true;
  s := Word.Documents.Item(1).Words.Item(1);
  Edit1.Text := Word.Documents.Item(1).Words.Item(1);
  ShowMessage( s );
end;


И в эдитбоксе, и в переменной s лежит "Выбо123р" — тоже, что и в документе вордовском
Сергей.
Re[4]: Отображение текста, считанного из Wordа
От: Hacker_Delphi Россия  
Дата: 29.08.02 09:48
Оценка: 2 (1)
Здравствуйте Сергей Лисовский, Вы писали:

СЛ>Здравствуйте Hacker_Delphi, Вы писали:


HD>>Нужно не просто дергать текст из Ворда, а дергать его через Words.Count, Words.Item(), что-ли...

HD>>там в хелпе по Ворд-Басику есть такое... и проверять, если первый символ слова < #32 — все, приплыли (пропускаем слово). вот и все...

СЛ>Объясни подробнее про первый символ слова, а то у меня такой кодьнормально работает безо всяких проверок:

СЛ>
СЛ>procedure TForm1.Button3Click(Sender: TObject);
СЛ>var
СЛ>  Word: Variant;
СЛ>  s: string;
СЛ>begin
СЛ>  Word := CreateOleObject( 'Word.Application.9' );
СЛ>  Word.Documents.Open( 'C:\Projects\tst\excel\Баги.doc' );
СЛ>  Word.Visible := true;
СЛ>  s := Word.Documents.Item(1).Words.Item(1);
СЛ>  Edit1.Text := Word.Documents.Item(1).Words.Item(1);
СЛ>  ShowMessage( s );
СЛ>end;
СЛ>


СЛ>И в эдитбоксе, и в переменной s лежит "Выбо123р" — тоже, что и в документе вордовском

Может быть, этот глюк проявляется тока из Ворд Басик, но если у тебя в документе есть таблицы, там будет куча всяких левых символов.
Кстати, нужно еще добавить отлов символа #10 — это перенос строки и символа #13 — это конец абзаца.
A проверка позволяет все ети глюки отловить. Rстати, не забывай между словами пробелы вклеивать
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[4]: Отображение текста, считанного из Wordа
От: Коконцева С.Ю.  
Дата: 29.08.02 09:58
Оценка:
Здравствуйте Сергей Лисовский, Вы писали:


СЛ>И в эдитбоксе, и в переменной s лежит "Выбо123р" — тоже, что и в документе вордовском


Я , видимо, не точно описала проблему.
Уточню — можно ли средствами Delphi считать строку WORD'а, содержащую СИМВОЛЫ (например, буковки пси, кси и тд) , а затем ее отобразить в какой-либо компоненте в таком же виде, как это выглядело в Word?
(строка "Выбо123р" не содежит символов...)
Re[5]: Отображение текста, считанного из Wordа
От: Сергей Лисовский  
Дата: 29.08.02 10:16
Оценка:
Здравствуйте Коконцева С.Ю., Вы писали:

КС>Я , видимо, не точно описала проблему.

КС>Уточню — можно ли средствами Delphi считать строку WORD'а, содержащую СИМВОЛЫ (например, буковки пси, кси и тд) , а затем ее отобразить в какой-либо компоненте в таком же виде, как это выглядело в Word?
КС>(строка "Выбо123р" не содежит символов...)

Дык символы эти написаны шрифтом 'Symbol'. Если вся строка в ворде написана этим шрифтом, то поменяй контролу Font.Name:='Symbol' и отображай. А если половина строки — Symbol, а вторая — MS Sans Serif, то получится фигня.

Это все ИМХО.
Сергей.
Re[5]: Отображение текста, считанного из Wordа
От: Hacker_Delphi Россия  
Дата: 29.08.02 10:31
Оценка:
Здравствуйте Коконцева С.Ю., Вы писали:

КС>Здравствуйте Сергей Лисовский, Вы писали:



СЛ>>И в эдитбоксе, и в переменной s лежит "Выбо123р" — тоже, что и в документе вордовском


КС>Я , видимо, не точно описала проблему.

КС>Уточню — можно ли средствами Delphi считать строку WORD'а, содержащую СИМВОЛЫ (например, буковки пси, кси и тд) , а затем ее отобразить в какой-либо компоненте в таком же виде, как это выглядело в Word?
КС>(строка "Выбо123р" не содежит символов...)
Единственный вариант — разбирать всю строку по стилям, а затем — кидать в TRichEdit
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[6]: Отображение текста, считанного из Wordа
От: Сергей Лисовский  
Дата: 29.08.02 10:39
Оценка:
Нда... "ИМХО" это было са-авсем неправильное.
Прошу прощения за дезинформацию
Сергей.
Re[6]: Отображение текста, считанного из Wordа
От: Сергей Лисовский  
Дата: 29.08.02 10:58
Оценка:
Здравствуйте Hacker_Delphi, Вы писали:

HD>Единственный вариант — разбирать всю строку по стилям, а затем — кидать в TRichEdit


Это ты Range.Style имеешь в виду? Так там в хелпе написано, что, мол, если у строки несколько стилей, то возвращается самый первый...

Или ты не про тот стиль?
Сергей.
Re[6]: Отображение текста, считанного из Wordа
От: Аноним  
Дата: 29.08.02 11:22
Оценка:
Здравствуйте Hacker_Delphi, Вы писали:

HD>Единственный вариант — разбирать всю строку по стилям, а затем — кидать в TRichEdit :))


Это единственное, что я тоже сначала подумала, но
— больно уж занудно ;
— в ворде все эти омеги написаны почему-то Times New Roman...(вордовский файл для меня — входная информация: какой дали, таким и должна пользоваться)
Re[7]: Отображение текста, считанного из Wordа
От: Hacker_Delphi Россия  
Дата: 29.08.02 15:04
Оценка:
Здравствуйте Сергей Лисовский, Вы писали:

СЛ>Здравствуйте Hacker_Delphi, Вы писали:


HD>>Единственный вариант — разбирать всю строку по стилям, а затем — кидать в TRichEdit


СЛ>Это ты Range.Style имеешь в виду? Так там в хелпе написано, что, мол, если у строки несколько стилей, то возвращается самый первый...


СЛ>Или ты не про тот стиль?

Дык... можно-ж по словам все разбивать (а они по границам стилей как раз делятся и по границам между словами)...и у слов как раз стили просить
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[8]: Отображение текста, считанного из Wordа
От: Сергей Лисовский  
Дата: 30.08.02 06:36
Оценка:
Здравствуйте Hacker_Delphi, Вы писали:

СЛ>>Это ты Range.Style имеешь в виду? Так там в хелпе написано, что, мол, если у строки несколько стилей, то возвращается самый первый...


СЛ>>Или ты не про тот стиль?

HD>Дык... можно-ж по словам все разбивать (а они по границам стилей как раз делятся и по границам между словами)...и у слов как раз стили просить

Дык я и разбивал.
Вот так:
  s := Word.Documents.Item(1).Words.Item(1).Style;

А оно что для Words.Item(1), что для Words.Item(2) возвращает "Заголовок1".
Чего-то я, видимо, не догоняю...
Сергей.
Re[9]: Отображение текста, считанного из Wordа
От: Hacker_Delphi Россия  
Дата: 30.08.02 10:57
Оценка:
Здравствуйте Сергей Лисовский, Вы писали:

СЛ>Здравствуйте Hacker_Delphi, Вы писали:


СЛ>>>Это ты Range.Style имеешь в виду? Так там в хелпе написано, что, мол, если у строки несколько стилей, то возвращается самый первый...


СЛ>>>Или ты не про тот стиль?

HD>>Дык... можно-ж по словам все разбивать (а они по границам стилей как раз делятся и по границам между словами)...и у слов как раз стили просить

СЛ>Дык я и разбивал.

СЛ>Вот так:
СЛ>
СЛ>  s := Word.Documents.Item(1).Words.Item(1).Style;

СЛ>

СЛ>А оно что для Words.Item(1), что для Words.Item(2) возвращает "Заголовок1".
СЛ>Чего-то я, видимо, не догоняю...
а надо смотреть фонт, цвет, цвет фона а не только имя стиля
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.