Текущий архив: 2005.10.09;
Скачать: CL | DM;
Вниз
Поиск слов в Word из Delphi Найти похожие ветки
← →
Mefodiy (2005-09-14 18:01) [0]В программе есть TEdit, в котором набирается слово на русском языке. На нажатие кнопки прописано:
WordApp: OleVariant;
WordApp := CreateOleObject("Word.Application");
WordApp.Documents.Open("MyWordDocument");
WordApp.Application.Keyboard(1049);
WordApp.Visible := True;
..........................................................................
WordApp.Selection.Find.ClearFormatting;
WordApp.Selection.Find.Replacement.ClearFormatting;
WordApp.Selection.Find.Replacement.Text := "";
WordApp.Selection.Find.Text := MyEdit.Text;
WordApp.Selection.Find.Forward := True;
WordApp.Selection.Find.Wrap := 1;
WordApp.Selection.Find.Format := False;
WordApp.Selection.Find.MatchCase := True;
WordApp.Selection.Find.MatchWholeWord := True;
WordApp.Selection.Find.MatchWildcards := False;
WordApp.Selection.Find.MatchSoundsLike := False;
WordApp.Selection.Find.MatchAllWordForms := False;
WordApp.Selection.Find.Execute;
Все работает без ошибок, но слово не находится, т.к. когда просматриваю через CTRL+F в Wordе, то видно, что русские буквы преобразовались в аброкадабру.
У меня Win XP. В региональных установках стоит русский язык.
В чем дело и главное что делать?
Спасибо
← →
Defunct © (2005-09-15 05:33) [1]может попробовать так:
WS : WideString;
WS := MyEdit.Text;
WordApp.Selection.Find.Text := WS;
?
← →
Mefodiy (2005-09-15 08:05) [2]Уже пробовал. Не помогает.
← →
Mefodiy (2005-09-16 16:27) [3]Мастера, отзовитесь !!!!!!!!!!!!!!!!!!!!!!
← →
lookin © (2005-09-16 16:32) [4]У меня Ваш код работает на ура...
← →
Mefodiy (2005-09-16 17:01) [5]С английскими буквами и числами у меня тоже работает.
Проблема в кириллице. Насколько я понимаю в Дельфи используется ASCII кодировка, а в Word - Unicode. Просто я никак не могу в WordApp.Selection.Find.Text преобразовать и записать в кодировке Unicode. Не знаю возможно ли такое вообще. Использвание StringToWhideChar ничего не меняет.
← →
lookin © (2005-09-16 17:10) [6][5] Mefodiy (16.09.05 17:01)
У меня с русским словом все ок...
← →
Mefodiy (2005-09-16 17:16) [7]Может быть дело в версии Word? У меня - Word 2003.
← →
lookin © (2005-09-16 17:20) [8][7] Mefodiy (16.09.05 17:16)
Может быть, у меня Ворд2000 и дельфи 5... И система Win2000.
← →
Mefodiy (2005-09-17 10:03) [9]Обнаружил следующее:
Если объявить переменную
var s: WideString;
в теле программы присвоить ей какую нибудь строку кириллицы
s := "КИРИЛЛИЦА";
и задать
WordApp.Selection.Find.Text := s;
то все нормально работает.
Но если задать
s := WordEdit.Text;
WordApp.Selection.Find.Text := s;
опять выходит аброкадабра.
Кстати вариант
s := WideString(WordEdit.Text);
тоже не помогает
← →
Mefodiy (2005-09-17 11:21) [10]Проблема решиласть с помощью функции:
function StringToWideString(const s: AnsiString; codePage: Word): WideString;
var l: integer;
begin
if s = "" then
Result := ""
else
begin
l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), -1, nil, 0);
SetLength(Result, l - 1);
if l > 1 then
MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]),
-1, PWideChar(@Result[1]), l - 1);
end;
end;
которую откопал в интернете.
Вызывать ее надо так
WordApp.Selection.Find.Text := StringToWideString(WordEdit.Text,1251);
Страницы: 1 вся ветка
Текущий архив: 2005.10.09;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.011 c