将找到的文件名和目录名添加到Memo1中:
function AddFile(Directory:String):Boolean;
var
hFindFile: THandle;
Win32FD: TWin32FindData;
begin
Result := False;
Form1.Memo1.Clear;
if not SetCurrentDir(Directory) then
Exit;
hFindFile := FindFirstFile(PChar('*.*'), Win32FD);
if hFindFile <> INVALID_HANDLE_VALUE then
try
repeat
if Win32FD.dwFileAttributes <>FILE_ATTRIBUTE_DIRECTORY then
Form1.Memo1.Lines.Add('<文件>'+Win32FD.cFileName)
else
Form1.Memo1.Lines.Add('<目录>'+Win32FD.cFileName);
until not FindNextFile(hFindFile, Win32FD);
finally
Windows.FindClose(hFindFile);
end;
end;
procedure findall(disk,path: String; var fileresult: Tstrings);
var
fpath: String;
fs: TsearchRec;
begin
fpath:=disk+path+'\*.*';
if findfirst(fpath,faAnyFile,fs)=0 then
begin
if (fs.Name<>'.')and(fs.Name<>'..') then
if (fs.Attr and faDirectory)=faDirectory then
begin
fileresult.add(disk+path+'\'+fs.Name);
findall(disk,path+'\'+fs.Name,fileresult);
end
else
fileresult.add(disk+path+'\'+fs.Name);
while findnext(fs)=0 do
begin
if (fs.Name<>'.')and(fs.Name<>'..') then
if (fs.Attr and faDirectory)=faDirectory then
begin
fileresult.add(disk+path+'\'+fs.Name);
findall(disk,path+'\'+fs.Name,fileresult);
end
else
fileresult.add(disk+path+'\'+fs.Name);
end;
end;
findclose(fs);
end;
var
fileresult: TStringList;
begin
fileresult := TStringList.Create;
try
findall('\\hostname\shareName', '', fileresult);
……;//文件名保存在fileresult中。
finally
fileresult.free;
end;