Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.056 c
1-1127028683
vidiv
2005-09-18 11:31
2005.10.09
Распознование ссылок в тексте


3-1125310756
Shaman_
2005-08-29 14:19
2005.10.09
Не могу выполнить выборку на NULL


6-1118691020
Crick
2005-06-13 23:30
2005.10.09
параметры в POST запросе


14-1126728661
syte_ser78
2005-09-15 00:11
2005.10.09
Стоит ли апгрейдится?


3-1125391402
Term
2005-08-30 12:43
2005.10.09
View для FB 1.5