Re: Delphi 6 & MS Word
От: akasoft Россия  
Дата: 06.07.03 19:30
Оценка: 22 (1)
Здравствуйте, 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 >>
Delphi 6 & MS Word
От: Dmititro  
Дата: 06.07.03 07:17
Оценка:
Здравствуйте, помогите реализовать следующую процедуру:
Входные параметры: стринговая перменная FileName (имя файла) и любая (обзавите как хотите) тоже стринговая.
А суть процедуры следующая, посредством Делфи найти осуществлять поиск в файле из FileName (файл вордовский) строку (которую вы обозвали как хотели) при этом окно Word'a должно открываться только в случае, если строка в данном файле присутствует. И как видно из темы, это надо сделать на Delphi 6.
Заранее спасибо за помошь
Re[2]: Delphi 6 & MS Word
От: Dmititro  
Дата: 08.07.03 05:16
Оценка:
Здравствуйте, akasoft,
Огромное спасибо именно это мне и требовалось
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.