Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];

Вниз

Поиск и открытие документа 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.047 c
15-1174932331
Eraser
2007-03-26 22:05
2007.04.22
Шрифт Anastasia Script


2-1175763871
inoc
2007-04-05 13:04
2007.04.22
передача массива в процедуру


15-1171458450
@!!ex
2007-02-14 16:07
2007.04.22
Мифы о Linux. Чем же она всеткаи хуже Windows?


2-1175423853
>>DEATH<<
2007-04-01 14:37
2007.04.22
array of tbitmap


2-1175437703
Abcdef123
2007-04-01 18:28
2007.04.22
Как в DBGrid "поймать" событие OnExit ячейки?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский