主要用FindFirst和FindNextprocedure TForm1.Button1Click(Sender: TObject); var FileRec:TSearchRec; s:string; Files:TStrings; i:Integer; begin Files:=TStringList.Create; s:='e:\mp3\中文\*.mp3'; i:=0; try if FindFirst(s,faAnyFile,FileRec)=0 then repeat inc(i); Files.Add(inttostr(i)+'*'+FileRec.Name); until FindNext(FileRec)<>0; Memo1.Lines.Add(inttostr(Files.count)); finally Memo1.Lines.AddStrings(Files); FindClose(FileRec); Files.Free; end;end;
function TMainForm.GetDirectoryName(Dir: String): String; begin if Dir[Length(Dir)]<> '\' then Result := Dir+'\' else Result := Dir; end;procedure TMainForm.FindFiles(APath: String); var FSearchRec, DSearchRec: TSearchRec; FindResult: integer; function IsDirNotation(ADirName: String): Boolean; begin Result := (ADirName = '.') or (ADirName = '..'); end;begin APath := GetDirectoryName(APath); FindResult := FindFirst(APath+FFileName,faAnyFile+faHidden+ faSysFile+faReadOnly,FSearchRec); try while FindResult = 0 do begin lbFiles.Items.Add(LowerCase(APath+FSearchRec.Name)); FindResult := FindNext(FSearchRec); end; FindResult := FindFirst(APath+'*.*', faDirectory, DSearchRec); while FindResult = 0 do begin if ((DSearchRec.Attr and faDirectory) = faDirectory) and not IsDirNotation(DSearchRec.Name) then FindFiles(APath+DSearchRec.Name); FindResult := FindNext(DSearchRec); end; finally FindClose(FSearchRec); end; end;
var
FileRec:TSearchRec;
s:string;
Files:TStrings;
i:Integer;
begin
Files:=TStringList.Create;
s:='e:\mp3\中文\*.mp3';
i:=0;
try
if FindFirst(s,faAnyFile,FileRec)=0 then
repeat
inc(i);
Files.Add(inttostr(i)+'*'+FileRec.Name);
until FindNext(FileRec)<>0;
Memo1.Lines.Add(inttostr(Files.count));
finally
Memo1.Lines.AddStrings(Files);
FindClose(FileRec);
Files.Free;
end;end;
function TMainForm.GetDirectoryName(Dir: String): String;
begin
if Dir[Length(Dir)]<> '\' then
Result := Dir+'\'
else
Result := Dir;
end;procedure TMainForm.FindFiles(APath: String);
var
FSearchRec,
DSearchRec: TSearchRec;
FindResult: integer; function IsDirNotation(ADirName: String): Boolean;
begin
Result := (ADirName = '.') or (ADirName = '..');
end;begin
APath := GetDirectoryName(APath);
FindResult := FindFirst(APath+FFileName,faAnyFile+faHidden+
faSysFile+faReadOnly,FSearchRec);
try
while FindResult = 0 do
begin
lbFiles.Items.Add(LowerCase(APath+FSearchRec.Name));
FindResult := FindNext(FSearchRec);
end; FindResult := FindFirst(APath+'*.*', faDirectory, DSearchRec); while FindResult = 0 do
begin
if ((DSearchRec.Attr and faDirectory) = faDirectory) and not
IsDirNotation(DSearchRec.Name) then
FindFiles(APath+DSearchRec.Name);
FindResult := FindNext(DSearchRec);
end;
finally
FindClose(FSearchRec);
end;
end;