Здравствуйте, Dmititro, Вы писали:
D>Входные параметры: стринговая перменная FileName (имя файла) и любая (обзавите как хотите) тоже стринговая.
D>А суть процедуры следующая, посредством Делфи найти осуществлять поиск в файле из FileName (файл вордовский) строку (которую вы обозвали как хотели) при этом окно Word'a должно открываться только в случае, если строка в данном файле присутствует. И как видно из темы, это надо сделать на Delphi 6.
Предложу простой медленный способ: использовать сам Word для поиска в своих (родных для Word) файлах. В примере ниже использованы необходимые для работы методы и вызовы. Конечно, придётся адаптировать пример для конкретных условий, посмотреть справку по TWordApplication в Delphi6. Это единственный компонент Ms Office, подробно расписанный в Справке D6.
Для оптимизации можно не создавать классы TWordApplication и TWordDocument каждый раз для нового файла, а создавать их в начале работы и уничтожать по её окончании.
Для показа файла пользователю можно использовать отдельный экземпляр Word.
Для поиска имён файлов, удовлтворяющих нужному критерию подойдёт группа FindFirst(), FindNext() и FindClose().
procedure TForm1.Button1Click(Sender: TObject);
var
WordApplication1: TWordApplication;
WordDocument1: TWordDocument;
FileName, AFindText: OleVariant;
SaveChanges: OleVariant;
Found: Boolean;
begin
WordApplication1 := TWordApplication.Create(Self);
WordApplication1.ConnectKind := ckNewInstance;
WordDocument1 := TWordDocument.Create(Self);
FileName := 'my_file_name.doc';
WordApplication1.Connect;
// WordApplication1.Visible := True;
// Открываем файл
WordApplication1.Documents.Open(FileName, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam);
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
AFindText := 'text_to_find';
// Ищем фрагмент
Found := WordDocument1.Range.Find.Execute(AFindText, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam);
// Если нужно, то покажем Word, если нашли фрагмент, но правильнее будет
// запомнить имя файла и потом его открыть с помощью ShellExecute()
WordApplication1.Visible := Found;
// Делаем паузу
Sleep(2000);
// Закрываем без сохранения изменений
SaveChanges := False;
WordDocument1.Close(SaveChanges, EmptyParam, EmptyParam);
// Очистка памяти
WordDocument1.Disconnect;
WordDocument1.Free;
WordApplication1.Quit;
WordApplication1.Disconnect;
WordApplication1.Free;
end;
... << RSDN@Home 1.1 alpha 1 >>