Einzelnen Beitrag anzeigen

Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#1

Findfirst...Findnext funktioniert nicht 100%ig

  Alt 8. Mär 2007, 07:41
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
Michael Kübler
  Mit Zitat antworten Zitat