procedure TMainForm.findfiles(Apath:string);
var
FSearchrec,DSearchrec:TSearchRec;
FindResult:integer;
function getdirname(dirname:string):string;
begin
if dirname[length(dirname)]<>'\' then
result:=dirname+'\'
else
result:=dirname;
end;
function IsDirNotation(Adirname:string):bool;
begin
result:=(adirname='.') or (adirname='..');
end;
begin
apath:=getdirname(apath);
FindResult:=findfirst(Apath+'*.pas',faAnyFile+faHidden+faSysFile+faReadOnly,FSearchRec);
try
while findresult=0 do
begin
listbox1.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;
procedure TMainForm.Button1Click(Sender: TObject);
begin
if edit1.text='' then
begin
showmessage('Input Directory First');
exit;
end;
listbox1.items.Clear;
findfiles(trim(edit1.text));
end;