Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi dateinamen in einem Ordner abfragen?? (https://www.delphipraxis.net/111-dateinamen-einem-ordner-abfragen.html)

negaH 27. Jun 2003 12:29

Eine bemerkung noch von mir.

In der TSearchRec Struktur sind Win32FindData Handles des OS gespeichert. Nach einem erfolgreichen FindFirst() sind diese Handles vom OS korrekt initialisiert.

In einigen Delphiversionen wird durch die RTL diese Handles aber nicht initialisiert, sie zeigen ins Nirwana. Sollte nun FindFirst() unter dieser RTL fehlschlagen und nachfolgend FindClose() aufgerufen werden, so greift das OS auf ungültige Handles zu. Folge: Zugriffsverletzungen in Kernel32.dll.

Fazit: FindClose() nur aufrufen wenn FindFirst() = 0, also

Delphi-Quellcode:
procedure Scan(const Path: String);
var
  SR: TSreachRec;
begin
  if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
  try
    repeat
      if (SR.Attr and faDirectory <> 0) and
         (SR.Name <> '.') and
         (SR.Name <> '..') then
      begin
        // Directory, rekursiver Aufruf hier
        Scan(Path + SR.Name + '\');
      end else
      begin
        // Datei, VolumeID etc.
      end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
end;
Gruß Hagen

[Edit=Sakura]Siehe Hagens nächstes Posting ;-)[/Edit]

negaH 27. Jun 2003 12:32

Irgendwie bekomme ich die Formatierung nicht hin

sakura 27. Jun 2003 12:35

Einerseits waren die Tags falsch geschachtelt, andererseits hattest Du die Option "BBCode in diesem Beitrag deaktivieren" eingeschaltet.

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:10 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz