0

チュートリアルのコードを使用してさまざまな変更を加えると、パラメーターが別の手順から渡されたときに、特定のパスでサブフォルダーを介してユーザーが入力したファイル名を持つファイルを検索する再帰手順の作業コードが得られましたボタンクリックで。それは次のとおりです。

procedure TfrmProject.btnOpenDocumentClick(Sender: TObject);
begin
FileSearch('C:\Users\Guest\Documents', edtDocument.Text+'.docx');
end;

procedure TfrmProject.FileSearch(const Pathname, FileName : string);
var Word : Variant;
    Rec  : TSearchRec;
    Path : string;
begin
Path := IncludeTrailingBackslash(Pathname);
if FindFirst(Path + FileName, faAnyFile - faDirectory, Rec) = 0
then repeat Word:=CreateOLEObject('Word.Application');
  Word.Visible:=True;
  Word.Documents.Open(Path + FileName);
   until FindNext(Rec) <> 0;
FindClose(Rec);


if FindFirst(Path + '*.*', faDirectory, Rec) = 0 then
 try
   repeat
   if ((Rec.Attr and faDirectory) <> 0)  and (Rec.Name<>'.') and (Rec.Name<>'..') then
     FileSearch(Path + Rec.Name, FileName);
  until FindNext(Rec) <> 0;
 finally
 FindClose(Rec);
end;

end; //procedure FileSearch

何が起こっているのかを学ぼうとした後、最初の FindClose(Rec) の時点まではよく理解できましたが、コードのこのセクションはまだ確信が持てません:

if FindFirst(Path + '*.*', faDirectory, Rec) = 0 then
     try
       repeat
       if ((Rec.Attr and faDirectory) <> 0)  and (Rec.Name<>'.') and (Rec.Name<>'..') then
         FileSearch(Path + Rec.Name, FileName);
      until FindNext(Rec) <> 0;
     finally
     FindClose(Rec);
    end;
    end;

私の推測では、最初の行は指定されたパスにサブフォルダーが見つかったかどうかをチェックしていると思いますが、残りの部分と、それが正しいかどうかについてはよくわかりません。助けていただければ幸いです。

4

0 に答える 0