Главная страница
    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.043 c
2-1175744673
Steep
2007-04-05 07:44
2007.04.22
TNotifyEvent


15-1174885995
Тульский
2007-03-26 09:13
2007.04.22
Экспорт из MS SQL в PostgreSQL


2-1175594781
VitV
2007-04-03 14:06
2007.04.22
Random+СУБД


2-1175607458
likenoother
2007-04-03 17:37
2007.04.22
несколько вопросов


4-1164296258
Вольный Стрелок
2006-11-23 18:37
2007.04.22
CreateProcess консольной программы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский