Die letzen Änderungen waren (wenn ich mich richtig erinnere):
das IgnoreDirectory von NormanNG
Daniels Doku-Wunsch
Delphi-Quellcode:
// Cancel > bricht den gesamten Suchvorgang ab
// IgnoreDirectory > überspringt das Auslesen dieses Verzeichnisses
// und aller seiner Unterverzeichnisse
// Errors (HRESULT) > NO_ERROR = S_OK = 0
// > ERROR_FILE_NOT_FOUND = 2 > The system cannot find the file specified.
// > ERROR_PATH_NOT_FOUND = 3 > The system cannot find the path specified.
// > ERROR_NO_MORE_FILES = 18 > The user set "Cancel" in the callback to TRUE.
ein etwas kürzerer Aufruf
und ein paar Prüffunktionen des neuen Rpckgabewertes
Delphi-Quellcode:
class function FindEx(RootFolder, Mask: string; SubFolders: Boolean; OnFindFile: TOnFindFile;
OnFindDirectory: TOnFindDirectory = nil; OnDirectoryUp: TOnDirectoryUp = nil): HRESULT;
class function isOK(E: HRESULT): Boolean;
class function GetErrorStr(E: HRESULT): String;
Die Fehlerprüfung, bzw. Fehlerrückgabe als Result
> siehe alle Zeilen mit Result, Error, GetLastError in .Search
und eine zugehörige Auswertung in .Find,
wozu auch das neue Feld FFound gehört
Delphi-Quellcode:
function TFindFiles.Find(RootFolder: string): HRESULT;
begin
FFound := False;
FCancel := False;
Result := Search(RootFolder);
if (Result = NO_ERROR) and not FFound then Result := ERROR_FILE_NOT_FOUND;
if FCancel then Result := ERROR_NO_MORE_FILES;
end;
[edit]
noch schnell ein DecodeFiletime verbaut, da viele mit TFileTime ja nicht viel anfangen können.
DecodeFiletime
class function DecodeFiletime(const FileTime: TFileTime): TDateTime;