AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi DirectoryExists liefert falsches Ergebnis

DirectoryExists liefert falsches Ergebnis

Ein Thema von BigAl · begonnen am 17. Apr 2019 · letzter Beitrag vom 20. Apr 2019
Antwort Antwort
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
161 Beiträge
 
Delphi 10.3 Rio
 
#1

DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 10:13
Hallo zusammen,

bin momentan dabei verschiedene Pfade auf deren Existenz zu prüfen. Leider arbeitet DirectoryExists scheinbar nicht sehr zuverlässig. In den meisten Fällen passt das Ergebnis, aber manchmal eben nicht.

Ich habe z.B. ein lokales Verzeichnis: C:\Windows\System32\OpenSSH

Ein Aufruf von DirectoryExists('C:\Windows\System32\OpenSSH') liefert mir bei diesem Verzeichnis immer False. In GetLastError steht dann 2 (File not Found). Alle anderen Verzeichnisse in "System32" werden als existent erkannt. Berechtigung schließe ich auch aus. Es ist ein physikalisches Verzeichnis. Mir gehen die Ideen aus...

Gibt es eine (zuverlässigere) Alternative zu DirectoryExists? Delphi arbeitet ja mit GetFileAttributes. Das ist wohl auch der von Microsoft vorgeschlagene Weg.

Danke schon mal für Eure Antworten.

Alex
Old but good: It's not a bug - it's a feature....
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
4.855 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 10:40
Die Funktion DirectoryExists(..) ist korrekt.

64-Bit-Anwendung auf 64-Bit-Windows? Dann macht das Sinn. Mach aus deiner Anwendung mal 64 Bit, dann sollte True rauskommen.

Ansonsten noch 2 andere Möglichkeiten:
https://social.msdn.microsoft.com/Fo...=csharpgeneral
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
161 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 11:09
Dem schönen Günther sei Dank

Werd's nachher gleich testen....
Old but good: It's not a bug - it's a feature....
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
750 Beiträge
 
#4

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 11:12
Zitat:
Ein Aufruf von DirectoryExists('C:\Windows\System32\OpenSSH') liefert mir bei diesem Verzeichnis immer False. In GetLastError steht dann 2 (File not Found). Alle anderen Verzeichnisse in "System32" werden als existent erkannt. Berechtigung schließe ich auch aus. Es ist ein physikalisches Verzeichnis. Mir gehen die Ideen aus...
Darf sowas überhaupt passieren? Es sollte doch egal sein, ob die Anwendung 32 oder 64 bittig ist. Das Verzeichnis auf auf der Festplatte aus die Maus.
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
161 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 11:22
Zitat:
Ein Aufruf von DirectoryExists('C:\Windows\System32\OpenSSH') liefert mir bei diesem Verzeichnis immer False. In GetLastError steht dann 2 (File not Found). Alle anderen Verzeichnisse in "System32" werden als existent erkannt. Berechtigung schließe ich auch aus. Es ist ein physikalisches Verzeichnis. Mir gehen die Ideen aus...
Darf sowas überhaupt passieren? Es sollte doch egal sein, ob die Anwendung 32 oder 64 bittig ist. Das Verzeichnis auf auf der Festplatte aus die Maus.
Also erstmal, Günther hat recht. Es funktioniert, sobald die Anwendung 64 Bit ist.

Und dann zum Zweiten: Ist mir auch schleierhaft warum die 32-Bit Anwendung sich da anders verhält. Eine Erklärung wäre cool .
Old but good: It's not a bug - it's a feature....
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
919 Beiträge
 
Delphi 7 Professional
 
#6

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 11:26
Gleiches Thema: https://www.delphipraxis.net/134417-...st-fehler.html

Link in erster Antwort folgen.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
750 Beiträge
 
#7

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 11:32
Ein echt tolles Feature
Wenn man als Programmierer System32 abfragt, dann nicht ohne Grund. Wenn man was in SysWOW64 abfragen will, dann weiß man das für gewöhnlich.
Aber standardmäßig einfach umzulenken ist verwirrend.
  Mit Zitat antworten Zitat
Schokohase

Registriert seit: 17. Apr 2018
674 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 11:49
Bevor man sich ereifert sollte man ergründen warum das so gemacht wird.

Grundsätzlich ist es immer von Vorteil, wenn man das Gelände (hier das OS) kennt, wo man sich aufhält (programmiert), dann stolpert man auch weniger
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.277 Beiträge
 
Delphi 5 Professional
 
#9

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 19:03
Aber standardmäßig einfach umzulenken ist verwirrend.
Ist es, und es hätte vielleicht bessere Wege für MS gegeben, x64 zu implementieren. Aber es ist nun einmal so, und es gibt Gründe, warum es so ist wie es ist - hauptsächlich Abwärtskompatibilität. Was würde passieren, wenn ein 32-bit Programm nicht umgeleitet würde, wenn es DLLs vom System laden will? Es würde versuchen, 64-bit DLLs zu laden, was scheitern wird und muss.

Grüße
Dalai
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
303 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: DirectoryExists liefert falsches Ergebnis

  Alt Gestern, 00:05
Kurze Frage, warum DirectoryExists und nicht TDirectory.Exists ?
Besonders bei Multiplatform-Anwendungen solltest du die Klassen der Unit System.IOUtils verwenden.
Dennis
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf