Also wenn man alles richtig machen möchte, dann sollte man
Events als Technik zur Rückgabe der Dateiinformationen einsetzen.
Eine normale StringList ist zu begrenzt, da man im Prinzip nur den Dateinamen bekommt und andere Informationen (Dateigrösse, Flags,...) unter den Tisch fallen.
Zunächst benötigt man einen Record zur Rückgabe der Daten:
Delphi-Quellcode:
TFileInformation = record
Name : string;
Path : string;
IsDir : boolean;
ReadOnlyFlag, HiddenFlag, SystemFlag : boolean;
Owner : TOwner;
Size : Int64;
...
end;
Bei jedem gefundenen File oder Directory werden die Infos von TSearchRec auf den "benutzerfreundlichen" Record TFileInformation kopiert und dann ein Event ausgelöst.
"Benutzerfreundlich" heisst hier, dass die Daten im Record TFileInformation so aufbereitet sind, dass man sie bequem und ohne Klimmzüge abgreifen kann.
Das Event sieht so aus:
TFileFindEvent = procedure(Sender:TObject; const FileInformation:TFileInformation) of object;
Im Anhang gibt es ein Demoprojekt in dem das Konzept umgesetzt wird.
Bestimmte Dateiattribute (ReadOnlyFlag, Owner, Size nur 32-bit genau) werden z.Zt. noch nicht ausgewertet aber das lässt sich ja leicht nachholen.
Wenn jemand meinen Sourcecode benutzen möchte, dann erwarte ich als Gegenleistung dass das verbessert und auf der
DP gepostet wird.
PS: leicht verbesserte Version hochgeladen