Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
17. Nov 2014
Mit XE7 sind aber nicht alle Probleme behoben (siehe ERROR_INVALID_PASSWORD).
Somit bleibt es dabei, dass du eine eigene Funktion erstellen musst, wenn diese robust laufen soll.
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
17. Nov 2014
Auch mit XE7 wird das nicht besser.
Einzige Lösung: Schreibe dir eine eigene DirectoryExists Funktion, die sich genau so verhält, wie du das erwartest. Und das geht auch ohne FindFirst.
Wie du die umsetzt ist egal, solange die genau das macht, was du davon erwartest ;)
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
15. Nov 2014
Nur so am Rande erwähnt, es gibt da z.B. den Fehler ERROR_INVALID_PASSWORD.
Angenommen es gibt ein Netzwerk-Device mit dem Namen Server und ich habe dort aber keine Berechtigung, dann liefert jede Abfrage DirectoryExists( '\\Server\KomischesVerzeichnisDasEsAuchEhNichtGibt\' ) ganz stumpf ein true zurück.
Insgesamt muss man den hier auch den Kontext betrachten. So liefert auch eine Abfrage...
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
14. Nov 2014
Hier mal die Rückgabewerte und den entsprechenden LastError
Directory|Result|LastError
\\|False|ERROR_INVALID_NAME
\\server|False|ERROR_BAD_PATHNAME
\\server\|False|ERROR_BAD_PATHNAME
\\server\notexisting|False|ERROR_BAD_PATHNAME
\\server\existing|True|
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
14. Nov 2014
Ja mit einer hübschen Schleife drumherum :shock:
Rückgabewert von DirectoryExists BOOLEAN
Rückgabewert von GetFileAttributes Cardinal
Rückgabewert von GetLastError Cardinal
Da ist nicht viel Raum für ein Backslash
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
14. Nov 2014
Soso, und wenn dieser Fehler da ist, dann ist es trotzdem ein existierendes Verzeichnis und der Rückgabewert muss true sein?
Kann ich nicht so wirklich glauben, denn
Aha, also ergibt das auch false ...
Also bei welcher Gelegenheit muss DirectoryExists ein true zurückliefern trotz dass wir bei GetFileAttributes(PChar(Directory)) aks Rückgabe ein INVALID_FILE_ATTRIBUTES bekommen?
Forum: Object-Pascal / Delphi-Language
Delphi
by Sir Rufo,
14. Nov 2014
Mal anders gefragt:
In welchen Situationen kann es dazu kommen, dass GetFileAttributes(PChar(Directory)) = INVALID_FILE_ATTRIBUTES und es trotzdem um ein existierendes Verzeichnis handelt?
Ich hätte jetzt mal pauschal vermutet: keine.
Also könnte der Code wie folgt lauten
function DirectoryExists(const Directory: string; FollowLink: Boolean = True): Boolean;
var