Ich habe ein Problem mit einer Komponente, die ich im Moment schreibe. Keine Angst, es handelt sich um ein "Object-Pascal" - PRoblem.
Die Komponente macht im Prinzip nichts anderes wie alle Dateien in einem Verzeichnis aufzulisten, wobei auch Unterverzeichnisse mitberücksichtigt werden. Nun das Problem: Die PRozedur arbeitet perfekt, bis auf eine Kleinigkeit: Stellt man z.B. Mask auf '*.pas' funktioniert die Prozedur nur. wenn im ersten Verzeichnis auch mind. eine .pas-Datei vorhanden ist ( Da ja nur dann FindFirst = 0 ist ). Hat mir jemand evtl. ein Workaround dafür??
Danke im Voraus,
SCRaT
Delphi-Quellcode:
procedure TMyFileSearch.DoSearch(InitDir : String);
var SR : TSearchRec;
S : String;
begin
if FindFirst(InitDir + FMask, faAnyFile, sr) = 0 then
begin
repeat
// '.' und '..' nicht beachten
if (SR.Name <> '.') and (SR.Name <> '..') then Begin;
// Wenn kein Verzeichnis
if (SR.Attr and faDirectory) = 0 then Begin
IF FFullPath Then FFileList.Add(InitDir + SR.Name)
Else FFileLIst.Add(SR.Name);
end else begin
// Wenn Verzeichnis
IF FFullpath Then S := InitDir + SR.Name
Else S := SR.Name;
if FMarkDirs then S := '[' + S + ']';
IF FShowDirs Then FFileList.Add(S);
if FSubDirs Then DoSearch(InitDir + SR.Name + '\');
end;
End;
until FindNext(sr) <> 0;
FindClose(sr);
end;
End;
EDIT: Statt "IF FindFirst..." nur "FindFirst..." zu schreiben funktioniert leider nicht