Wofür soll das GetLastError denn gut sein? Der Rückgabewert ist doch Boolean.
Delphi-Quellcode:
Result := (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_NOT_READY) and
(LastError <> ERROR_BAD_NET_NAME);
Wenn
GetFileAttributesW fehlschlägt, dann kannst du halt nicht automatisch daraus schließen, dass es das Verzeichnis nicht gibt. Es kann genausogut sein, dass das Verzeichnis da ist, aber du keine Berechtigung dafür besitzt, etc. Daher musst du um sicherzugehen zwangsweise den Error Code prüfen.