Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.22;
Скачать: CL | DM;

Вниз

Поиск и открытие документа Word   Найти похожие ветки 

 
VologdaBobR ©   (2007-03-29 10:57) [0]

Здравствуйте. Извините если пост не в той теме. у меня такой вопрос:
С помощью делфи надо реализовать поиск и открытие документа ворд.
Ищу средствами ВБ:
w:=createoleobject("word.application");
w.FileSearch.FileName:=searchform.labelededit1.text+".doc";
w.FileSearch.SearchSubFolders:=true;
w.FileSearch.LookIn:= Extractfiledir(application.ExeName)+"\documents\";
if  w.filesearch.execute>0
then
 begin
 messagebox(handle,"Файл найден","Внимание",0);
 dir:=w.filesearch.execute.foundfiles();
 w.documents.open(dir);
 w.visible;
 end
else
messagebox(handle,"Файл не найден","Внимание",0);
end;
В итоге пишет что файл найден, однако открыть его не могу. Подскажите в чем ошибка? Заранее спасибо


 
Elen ©   (2007-03-29 11:24) [1]


> Ищу средствами ВБ:

А почему не обычними FindFirst?


 
VologdaBobR ©   (2007-03-29 11:27) [2]


> А почему не обычними FindFirst?
>

просто так быстрее работает как мне кажется... кстати не могли бы вы предложить вариант поиска с помощью findfirst пробовал но тоже что-то не получается... файл если и найдется то будет только один


 
Elen ©   (2007-03-29 11:28) [3]


> файл если и найдется то будет только один

Директория одна? Я имею ввиду рекурсии для поиска делать не надо?


 
BobR ©   (2007-03-29 12:39) [4]

В том и дело что в директории где ищу есть и другие директории и файл там в одной из них... заранее неизвестно в какой.


 
Elen ©   (2007-03-29 12:51) [5]


> В том и дело что в директории где ищу есть и другие директории
> и файл там в одной из них... заранее неизвестно в какой.

Вот это как раз не проблема. Вот тебе примерчик рекурсии по каталогу и открытия файла в соответствующем приложении (код требует доработки и може розглядаться только как пример) :

unit Unit1;

interface

uses      shellapi,
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   ListBox1: TListBox;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
   function findA(p:string; var slist:TStringList):variant;
var    i:integer;
 Form1: TForm1;

implementation

{$R *.dfm}
 //********** FUNCTION **********
function findA;
var s:TSearchRec; lp,ep,ss:string;k:integer;
begin
ep:=ExtractFilePath(p)+"*.*";
if FindFirst(ep,faAnyFile, s)=0 then begin
repeat
 if (s.Name <>".")and(s.Name <>"..") then begin
 lp:="";k:=0; while k<=i*4 do begin lp:=lp+" ";inc(k);end;
 if s.Attr=faDirectory then
  slist.Append(lp+"["+s.Name+"]")
 else
   if s.Name="Doc1.doc" then
    ShellExecute(Application.Handle,"open",pchar(ExtractFilePath(ep)+s.Name),"","",SW_SHOWDEFAULT);  //Если файл такой найден запускаем

   slist.Append(lp+s.Name);
  if s.Attr=faDirectory then begin
   inc(i);
   findA(ExtractFilePath(p)+s.Name+"\"+ExtractFileName(p), slist);
   dec(i);
  end;
  end;
until FindNext(s)<>0
end;
end;
//********** END FUNCTION ******  {}
procedure TForm1.FormCreate(Sender: TObject);

var ts:TStringList;
begin
ts:=TStringList.Create;
finda("c:\temp\*.*",ts); //Путь сам прпишеш
ListBox1.Items:=ts;
end;

end.


Удачи.


 
BobR ©   (2007-03-29 12:57) [6]

Бегло просмотрел этот код...
Выглядит правдоподобно. Проблема в том, что я забыл про shellexecute совсем...
Приду домой попробую... но спасибки все равно тк мне кажется все получится


 
BobR ©   (2007-03-29 12:57) [7]

Бегло просмотрел этот код...
Выглядит правдоподобно. Проблема в том, что я забыл про shellexecute совсем...
Приду домой попробую... но спасибки все равно тк мне кажется все получится


 
Elen ©   (2007-03-29 13:04) [8]


> Выглядит правдоподобно

Работает так же :)



Страницы: 1 вся ветка

Текущий архив: 2007.04.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
2-1175691056
cosinus
2007-04-04 16:50
2007.04.22
Хм...Вопрос по глобальному хуку на клавиатуру


1-1172147339
Dmitry_177
2007-02-22 15:28
2007.04.22
MYITEM перевести с С++ на Delphi


10-1131727900
Георгий
2005-11-11 19:51
2007.04.22
Delphi+Excel


4-1164785371
Dmitry_177
2006-11-29 10:29
2007.04.22
Второе меню в окне..


15-1174961480
Slider007
2007-03-27 06:11
2007.04.22
С днем рождения ! 27 марта