Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Поиск в Ворде фразы и вставка ее в Дельфи


Автор: Artem2005 9.1.2005, 13:43
Делаю программу по тестированию, и необходимо что-бы в дельфи вставлялся конкретный вопрос находящийся в doc файле

Автор: <Spawn> 11.1.2005, 06:34
Какой то странный подход. Почему не создать простенькую базу для хранения вопросов?

Автор: Artem2005 11.1.2005, 14:26
Дапустим я набираю вопрос в Ворде, и что дальше?

Автор: Medved 11.1.2005, 14:58
Действительно старнный подход. Логика приложения строиться в зависимости от того, в каком редакторе будут набираться вопросы. А вы мне вот скажите, как будет стоиться приложение, если вопросы будете набирать ну например в PhotoShop?

Автор: Darksquall 27.1.2005, 12:38
Хоть и странно, но отвечаю.
Положим на форму кнопку, WordApplications и WordDocument (вкладка Servers).

Пишем Функцию поиска слова.

Код

Function Tform1.Find(St:string):string;
var a, b: OleVariant;
j, ilengy: Integer;
Nashli:boolean;
begin
Nashli:=false;
       ilengy:=Length(WordDocument1.Range.Text);
       j:=0;
       repeat
               a:=j;
               b:=j+Length(st);
               if WordDocument1.Range(a,b).Text=st then Nashli:=true;
       inc(j);
       until (j>=ilengy-Length(st)) or Nashli;
       if Nashli then Find:=WordDocument1.Range(a,b).Text;
end;


И не забываем добавить функцию в класс TForm1

Теперь подключаемся к Doc файлу через компоненты со вкладки Servers, WordApplications и WordDocument.

Код

procedure TForm1.Button1Click(Sender: TObject);
var
DocName,ConfConv,ReadOnly,AddToRecFiles,Psw,PswTmp,Revert,WritePsw,WritePswTmp,
 Fmt,replace,star :OleVariant;
begin
DocName:='word1.doc';//имя файла
ConfConv:=False;
ReadOnly:=False;
AddToRecFiles:=False;
Psw:='';
PswTmp:='';
Revert:=False;
WritePsw:='';
WritePswTmp:='';
Fmt:=wdOpenFormatAuto;
replace:=wdReplaceAll;
WordApplication1.Connect;
WordApplication1.Visible:=false;//не включаем видимость Ворда
WordApplication1.Documents.Open(DocName, ConfConv, ReadOnly, AddToRecFiles,
 Psw, PswTmp, Revert, WritePsw, WritePswTmp, Fmt, EmptyParam,EmptyParam);
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
// Ищем, а затем выводим на экран
Showmessage(Form1.Find('Да здравствует Ленин!'));
//не забываем закрыть word
WordDocument1.Close;
WordApplication1.Disconnect;
end;

smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)