Проблема в том, что в строке, считанной из Wordа в Stringовую переменную в Delphi одновременно содержатся буквы и символы.
В результате — не могу адекватно отобразить полученную строчку в Text'е компонент...
Здравствуйте Коконцева С.Ю., Вы писали:
КС>Проблема в том, что в строке, считанной из Wordа в Stringовую переменную в Delphi одновременно содержатся буквы и символы. КС>В результате — не могу адекватно отобразить полученную строчку в Text'е компонент...
Здравствуйте Сергей Лисовский, Вы писали:
СЛ>Здравствуйте Коконцева С.Ю., Вы писали:
КС>>Проблема в том, что в строке, считанной из Wordа в Stringовую переменную в Delphi одновременно содержатся буквы и символы. КС>>В результате — не могу адекватно отобразить полученную строчку в Text'е компонент...
СЛ>А если в WideString читать, тоже самое?
Естессно..
Нужно не просто дергать текст из Ворда, а дергать его через Words.Count, Words.Item(), что-ли...
там в хелпе по Ворд-Басику есть такое... и проверять, если первый символ слова < #32 — все, приплыли (пропускаем слово). вот и все...
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Здравствуйте 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р" — тоже, что и в документе вордовском
Здравствуйте Сергей Лисовский, Вы писали:
СЛ>Здравствуйте Hacker_Delphi, Вы писали:
HD>>Нужно не просто дергать текст из Ворда, а дергать его через Words.Count, Words.Item(), что-ли... HD>>там в хелпе по Ворд-Басику есть такое... и проверять, если первый символ слова < #32 — все, приплыли (пропускаем слово). вот и все...
СЛ>Объясни подробнее про первый символ слова, а то у меня такой кодьнормально работает безо всяких проверок: СЛ>
СЛ>И в эдитбоксе, и в переменной s лежит "Выбо123р" — тоже, что и в документе вордовском
Может быть, этот глюк проявляется тока из Ворд Басик, но если у тебя в документе есть таблицы, там будет куча всяких левых символов.
Кстати, нужно еще добавить отлов символа #10 — это перенос строки и символа #13 — это конец абзаца.
A проверка позволяет все ети глюки отловить. Rстати, не забывай между словами пробелы вклеивать
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
СЛ>И в эдитбоксе, и в переменной s лежит "Выбо123р" — тоже, что и в документе вордовском
Я , видимо, не точно описала проблему.
Уточню — можно ли средствами Delphi считать строку WORD'а, содержащую СИМВОЛЫ (например, буковки пси, кси и тд) , а затем ее отобразить в какой-либо компоненте в таком же виде, как это выглядело в Word?
(строка "Выбо123р" не содежит символов...)
Здравствуйте Коконцева С.Ю., Вы писали:
КС>Я , видимо, не точно описала проблему. КС>Уточню — можно ли средствами Delphi считать строку WORD'а, содержащую СИМВОЛЫ (например, буковки пси, кси и тд) , а затем ее отобразить в какой-либо компоненте в таком же виде, как это выглядело в Word? КС>(строка "Выбо123р" не содежит символов...)
Дык символы эти написаны шрифтом 'Symbol'. Если вся строка в ворде написана этим шрифтом, то поменяй контролу Font.Name:='Symbol' и отображай. А если половина строки — Symbol, а вторая — MS Sans Serif, то получится фигня.
Здравствуйте Коконцева С.Ю., Вы писали:
КС>Здравствуйте Сергей Лисовский, Вы писали:
СЛ>>И в эдитбоксе, и в переменной s лежит "Выбо123р" — тоже, что и в документе вордовском
КС>Я , видимо, не точно описала проблему. КС>Уточню — можно ли средствами Delphi считать строку WORD'а, содержащую СИМВОЛЫ (например, буковки пси, кси и тд) , а затем ее отобразить в какой-либо компоненте в таком же виде, как это выглядело в Word? КС>(строка "Выбо123р" не содежит символов...)
Единственный вариант — разбирать всю строку по стилям, а затем — кидать в TRichEdit
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Здравствуйте Hacker_Delphi, Вы писали:
HD>Единственный вариант — разбирать всю строку по стилям, а затем — кидать в TRichEdit
Это ты Range.Style имеешь в виду? Так там в хелпе написано, что, мол, если у строки несколько стилей, то возвращается самый первый...
Или ты не про тот стиль?
Сергей.
Re[6]: Отображение текста, считанного из Wordа
От:
Аноним
Дата:
29.08.02 11:22
Оценка:
Здравствуйте Hacker_Delphi, Вы писали:
HD>Единственный вариант — разбирать всю строку по стилям, а затем — кидать в TRichEdit :))
Это единственное, что я тоже сначала подумала, но
— больно уж занудно ;
— в ворде все эти омеги написаны почему-то Times New Roman...(вордовский файл для меня — входная информация: какой дали, таким и должна пользоваться)
Здравствуйте Сергей Лисовский, Вы писали:
СЛ>Здравствуйте Hacker_Delphi, Вы писали:
HD>>Единственный вариант — разбирать всю строку по стилям, а затем — кидать в TRichEdit
СЛ>Это ты Range.Style имеешь в виду? Так там в хелпе написано, что, мол, если у строки несколько стилей, то возвращается самый первый...
СЛ>Или ты не про тот стиль?
Дык... можно-ж по словам все разбивать (а они по границам стилей как раз делятся и по границам между словами)...и у слов как раз стили просить
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Здравствуйте Hacker_Delphi, Вы писали:
СЛ>>Это ты Range.Style имеешь в виду? Так там в хелпе написано, что, мол, если у строки несколько стилей, то возвращается самый первый...
СЛ>>Или ты не про тот стиль? HD>Дык... можно-ж по словам все разбивать (а они по границам стилей как раз делятся и по границам между словами)...и у слов как раз стили просить
Дык я и разбивал.
Вот так:
s := Word.Documents.Item(1).Words.Item(1).Style;
А оно что для Words.Item(1), что для Words.Item(2) возвращает "Заголовок1".
Чего-то я, видимо, не догоняю...
Здравствуйте Сергей Лисовский, Вы писали:
СЛ>Здравствуйте Hacker_Delphi, Вы писали:
СЛ>>>Это ты Range.Style имеешь в виду? Так там в хелпе написано, что, мол, если у строки несколько стилей, то возвращается самый первый...
СЛ>>>Или ты не про тот стиль? HD>>Дык... можно-ж по словам все разбивать (а они по границам стилей как раз делятся и по границам между словами)...и у слов как раз стили просить
СЛ>Дык я и разбивал. СЛ>Вот так: СЛ>
СЛ> s := Word.Documents.Item(1).Words.Item(1).Style;
СЛ>
СЛ>А оно что для Words.Item(1), что для Words.Item(2) возвращает "Заголовок1". СЛ>Чего-то я, видимо, не догоняю...
а надо смотреть фонт, цвет, цвет фона а не только имя стиля
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))