Ok, die wirklich korrekte Umsetzung der Funktion müsste so lauten:
Delphi-Quellcode:
function DirectoryExists(
const Directory:
string; FollowLink: Boolean = True): Boolean;
var
Code: Cardinal;
Handle: THandle;
LastError: Cardinal;
begin
Result := False;
Code := GetFileAttributes(PChar(Directory));
if Code <> INVALID_FILE_ATTRIBUTES
then
begin
[...]
end
else
begin
LastError := GetLastError;
if
(LastError <> ERROR_FILE_NOT_FOUND)
and
(LastError <> ERROR_PATH_NOT_FOUND)
and
(LastError <> ERROR_BAD_PATHNAME)
and
(LastError <> ERROR_INVALID_NAME)
and
(LastError <> ERROR_BAD_NETPATH)
and
(LastError <> ERROR_BAD_NET_NAME)
then // Wir können keine Aussage darüber treffen, daher
RaiseLastOSError( LastError );
end;
end;
System Error Codes (0-499)
Bei einem
ERROR_TOO_MANY_OPEN_FILES
kann man einfach keine Aussage darüber treffen, ob das Verzeichnis existiert oder nicht. Also entweder einen TriState (Ja, Nein, WeissDerGeier) zurückliefern oder eine
Exception werfen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)