-2

我在为将打开目录文件夹并递归删除其中的所有文件以便我可以依次删除文件夹本身的过程编写代码时遇到问题。我不会遇到递归过程的问题,但我似乎无法让 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;

现在看来,无论我输入什么文件名,该过程都找不到任何文件,并且总是返回“未找到匹配文件”消息。

4

1 回答 1

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.
于 2013-07-15T14:34:16.740 回答