我在编写程序代码时遇到问题,该程序将打开目录文件夹并以递归方式删除其中的所有文件,以便我可以依次删除文件夹本身。我不会遇到递归过程的问题,但我似乎无法使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;
现在似乎无论我输入什么文件名,程序都找不到任何文件,并且总是返回“找不到匹配的文件”消息。
答案 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.