如何让FindFirst查找当前目录中的文件?

时间:2013-07-15 14:05:21

标签: delphi file-search findfirst

我在编写程序代码时遇到问题,该程序将打开目录文件夹并以递归方式删除其中的所有文件,以便我可以依次删除文件夹本身。我不会遇到递归过程的问题,但我似乎无法使FindFirst / FindNext / FindClose函数正常工作。下面的过程应该在当前目录中搜索任何类型的任何文件(但是我可能会滥用字符串通配符;我在网上找不到很多关于它们使用语法的内容)。

procedure TForm1.Button1Click(Sender: TObject);
var SR: TSearchRec;
begin
 ShowMessage(GetCurrentDir);
 if (FindFirst('\*.*',faAnyFile,SR)=0) then
 begin
  repeat
   ShowMessage(SR.Name);
  until FindNext(SR)<>0;
  FindClose(SR);
 end
 else begin
  ShowMessage('No matching files found');
 end;
end;

现在似乎无论我输入什么文件名,程序都找不到任何文件,并且总是返回“找不到匹配的文件”消息。

1 个答案:

答案 0 :(得分:0)

路径'\*.*'相对于当前工作目录的驱动器的根目录。您可能希望将GetCurrentDir + '\*'传递给FindFirst。甚至更好,TPath.Combine(GetCurrentDir, '*')

例如,如果您将适当的路径传递给FindFirst,此程序会演示您的代码是否正常工作。

program FindFirstDemo;

{$APPTYPE CONSOLE}

uses
  SysUtils, IOUtils;

var
  SR: TSearchRec;

begin
  Writeln(GetCurrentDir);
  if FindFirst(TPath.Combine(GetCurrentDir, '*'),faAnyFile,SR)=0 then
  begin
    repeat
      Writeln(SR.Name);
    until FindNext(SR)<>0;
    FindClose(SR);
  end;
  Readln;
end.