OK a więc oto kod przycisku Button1 odpowiedzialnego za wyszukiwanie plików:
procedure Tglowna.Button1Click(Sender: TObject);
var
Lista: TStringList;
i: integer;
begin
try
Lista := TStringList.Create;
RS.ZnajdzPlik('c:\', '*.pdf', Lista);
for i := 1 to lista.Count-1 do
begin
memo.Lines.Add(lista.Strings[i]);
end;
Lista.Free;
except
end;
end;
Używam modułu "reiko" w którym mam tę procedurę a ma ona taką oto definicję:
procedure TRS.ZnajdzPlik(Sciezka,NazwaPliku:String; wyniki: TStringList);
var
FSearchRec,DSearchRec:TSearchRec;
FindResult:integer;
function GetDirectoryName(Dir:String):String;
begin
if Dir[Length(Dir)]<>'\' then
Result:=dir+'\'
else
Result:=Dir;
end;
function IsDirNotation(AdirName:String):Boolean;
begin
Result:=(AdirName='.') or (AdirName='..');
end;
{
faReadOnly - Tylko do odczytu
faHidden - Ukryty
faSysVolume - Plik systemowy
faVolumeID - Etykieta woluminu
faDirectory - Katalog
faArchive - Zarchiwizowany
faAnyFile - Dowolny plik
}
begin
//FindResult:=FindFirst(Sciezka+NazwaPliku,faReadOnly+faHidden+faArchive+faAnyFile,FSearchRec);
Sciezka:=GetDirectoryName(Sciezka);
FindResult:=FindFirst(Sciezka+NazwaPliku,faAnyFile+faHidden+faSysFile+faReadOnly,FSearchRec);
try
while FindResult = 0 do
begin
{ if info = true then Wyniki.Add(Sciezka+FsearchRec.Name+ ': ' + FloatToStr(rozmiarpliku(Sciezka+FsearchRec.Name)/1024) + ' KB');
if info = false then }
Wyniki.Add(Sciezka+FsearchRec.Name);
FindResult:=FindNext(FSearchRec);
end;
FindResult:=FindFirst(Sciezka+'*.*',faDirectory,DSearchRec);
while FindResult=0 do
begin
if ((DSearchRec.Attr and faDirectory)=faDirectory) and not IsDirNOtation(DSearchRec.Name) then
ZnajdzPlik(Sciezka+DSearchRec.Name,NazwaPliku, wyniki);
FindResult:=FindNext(DSearchRec);
end;
finally
FindClose(FSearchRec);
end;
end;