Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> и снова delphi + Word, delphi + Word 
:(
    Опции темы
Yustas911
Дата 4.4.2007, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 2.4.2007

Репутация: нет
Всего: нет



Вопрос опять про Word и Delphi, только не отправляйте в другие темы, читал, но вопрос остался.
Начнем все по порядку, задача открыть документ, посмотреть есть ли там определенные слова (10 слов), и если есть вывести на форму сообщение или как то по другому сообщить об этом пользователю.
Вопрос с помощью чего это лучше сделать, почитал, посмотрел что возможно через OLE или  Word.Application, суть в том что в дальнейшем планируется искать не только в файлах *.Doc, но и *.xls, *.rtf
Стоит Delphi 7.
пробовал через метод  Word:=ActivateOLEObject('Word.Application'); - выдает ошибку. почему не понимаю smile
Методом проб и ошибок добился? что документ открывается через OLE, но теперь стоит проблема (по крайней мере для меня) как через OLE достучаться до методов документа.
Книг куча, но вот что-то ни где не могу найти описание методов и свойств OLE и  Word.Application.
PS
Delphi изучал давно, помню очень мало, но очень хорошо знаю встроенный язык 1С, поэтому основы ООП знакомы  smile 

PM MAIL   Вверх
MetalFan
Дата 4.4.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 3
Всего: 128



Yustas911, изучай VBA  и будет тебе счастье

Цитата(Yustas911 @  4.4.2007,  08:54 Найти цитируемый пост)
только не отправляйте в другие темы, читал, но вопрос остался

видимо плохо читал. все уже давно подробно расжевано. подробнее некуда

Это сообщение отредактировал(а) MetalFan - 4.4.2007, 09:28


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Rennigth
Дата 4.4.2007, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: нет
Всего: 76



Yustas911, Не особо работал с Вордом, но что-то помню... 

Создать объект Word:

Код

function MSWordCreateApplication: IWordApplication;
begin
  Result := CreateOleObject('Word.Application') as IWordApplication;
end;


Открыть документ:
Код

function MSWordOpenDocument(const AWordApp: IWordApplication; AFileName: OleVariant): IWordDocument;
begin
  Result := nil;
  if Assigned(AWordApp) and (not VarIsNull(AFileName)) and VarIsStr(AFileName) then
  begin
    if FileExists(string(AFileName)) then
      Result := AWordApp.Documents.Open(AFileName, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam, EmptyParam)
    else
      Result := AWordApp.Documents.Add(EmptyParam, EmptyParam,
        EmptyParam, EmptyParam) as IWordDocument;
  end;
end;


Сохранить документ:
Код

function MSWordSaveDocument(const ADocument: IWordDocument; AFileName:  OleVariant): Boolean;
var
  lDir: string;
begin
  Result := False;
  if Assigned(ADocument) and (not VarIsNull(AFileName)) and VarIsStr(AFileName) then
  begin
    lDir := ExtractFilePath(string(AFileName));
    if (lDir <> '') and (lDir <> DecimalSeparator) then
    begin
      ForceDirectories(lDir);
      try
        ADocument.SaveAs(AFileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
          EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
        while not ADocument.Saved do
          Sleep(0);
        Result := True;
      finally
        Assert(Result, 'Error: MSWordSaveDocument');
      end;
    end;

  end;
end;


Закрыть документ:
Код

procedure MSWordCloseDocument(const ADocument: IWordDocument);
begin
  if Assigned(ADocument) then
    ADocument.Close(EmptyParam, EmptyParam, EmptyParam);
end;


Закрыть объект Word:
Код

procedure MSWordCloseApplication(const AWordApp: IWordApplication);
begin
  if Assigned(AWordApp) then
     AWordApp.Quit(EmptyParam, EmptyParam, EmptyParam);
end;



в uses нужен Word2000(или Word2003) какой выбирал при установке вроде.

Ну а что делать с полученным IWordDocument надеюсь разберешся.



Это сообщение отредактировал(а) Rennigth - 4.4.2007, 09:32


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Yustas911
Дата 4.4.2007, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 2.4.2007

Репутация: нет
Всего: нет




а по поводу того где можно взять описание методов и свойств OLE     smile 
PM MAIL   Вверх
Rennigth
Дата 4.4.2007, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: нет
Всего: 76



Цитата(Yustas911 @  4.4.2007,  10:00 Найти цитируемый пост)
а по поводу того где можно взять описание методов и свойств OLE       

Какого Ole? smile  Ых многа smile
А вообще самую полную доку по всяким вордам и т.д. ты найдешь только здесь



--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Yustas911
Дата 4.4.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 2.4.2007

Репутация: нет
Всего: нет



извиняюсь, я про  OleContainer

PM MAIL   Вверх
MetalFan
Дата 4.4.2007, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 3
Всего: 128



если работать через позднее связывание, то можно в параметрах не указывать кучу EmptyParam.
подсмотреть св-ва и методы объектов офиса можно в справке по VBA по конкретному приложению.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0941 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.