Вот есть функции следующие: //функция поиска файлов и внутри них по содержанию Код | procedure TForm1.FindFiles(StartFolder, Mask: string; ScanSubFolders: Boolean = True; Node: TTreeNode=nil;st:string='';List: TStrings=nil); var SearchRec: TSearchRec; FindResult: Integer; NewNode, PNode: TTreeNode; S:String; a, b: OleVariant; j, ilengy: Integer; Nashli:boolean; begin ChDir(StartFolder); PNode := TreeView1.Items.AddChild(Node, StartFolder); // задание пиктограмм для папок закрытых PNode.ImageIndex := 1; PNode.SelectedIndex := PNode.ImageIndex; Nashli:=false; ilengy:=Length(WordDocument1.Range.Text); j:=0; try StartFolder := IncludeTrailingBackslash(StartFolder); FindResult := FindFirst(StartFolder + '*.*', faAnyFile, SearchRec); try while FindResult = 0 do with SearchRec do begin if (Attr and faDirectory) <> 0 then begin if ScanSubFolders and (Name <> '.') and (Name <> '..') then FindFiles(StartFolder + Name, Mask, ScanSubFolders,PNode); end else begin if MatchesMask(Name, Mask) then begin // открытие файла для поиска внем OpenFile(Name); repeat a:=j; b:=j+Length(st); if WordDocument1.Range(a,b).Text=st then begin //создаем узел если нашли такой файл Nashli:=true; NewNode := TreeView1.Items.AddChild(PNode, SearchRec.Name); //задание пиктограммы NewNode.ImageIndex := 0; NewNode.SelectedIndex := NewNode.ImageIndex; // сохраняем в мемо имя файла, и фразу где встречается искомый текст List.Add(StartFolder + Name); List.Add(WordDocument1.Range(a,b).Text); List.EndUpdate; end; inc(j); until (j>=ilengy-Length(st)) or Nashli; If Nashli then begin // если нашли файл содержащий информацию, то заносим его название в мемо //и текст в котором содержиться искомая строка для поиска List.Add(StartFolder + Name); List.Add(WordDocument1.Range(a,b).Text); List.EndUpdate; end; //закрываем word WordDocument1.Close; WordApplication1.Disconnect; { NewNode := TreeView1.Items.AddChild(PNode, SearchRec.Name); NewNode.ImageIndex := 0; NewNode.SelectedIndex := NewNode.ImageIndex; S:=''; S:=NewNode.Text; while NewNode.Parent <> nil do begin NewNode:=NewNode.Parent; S:=NewNode.Text+'\'+S; end; } end; end; FindResult := FindNext(SearchRec); end; finally FindClose(SearchRec); end; finally end;
|
//открывает файлы для поиска: Код |
procedure TForm1.OpenFile(FileName: string); var DocName,ConfConv,ReadOnly,AddToRecFiles,Psw,PswTmp,Revert,WritePsw,WritePswTmp, Fmt,replace:OleVariant; begin DocName:=FileName;//èìÿ ôàéëà 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,EmptyParam,EmptyParam,EmptyParam); WordDocument1.ConnectTo(WordApplication1.ActiveDocument); end;
|
Проблема в том, что работа программы падает когда файл открывается(((.... пишет "Файл не найден". можете помочь? бьюсь уже который день. Дельфи 7 стоит у меня/ Может я неправильно задаю параметры для Open?
|