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
485 Beiträge
 
Delphi 12 Athens
 
#1

DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 11: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
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Der schöne Günther
Online

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

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 11: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
485 Beiträge
 
Delphi 12 Athens
 
#3

AW: DirectoryExists liefert falsches Ergebnis

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

Werd's nachher gleich testen....
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
DieDolly

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

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 12: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
485 Beiträge
 
Delphi 12 Athens
 
#5

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 12: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 .
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 12: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
2.173 Beiträge
 
#7

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 12: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
(Gast)

n/a Beiträge
 
#8

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 12: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.679 Beiträge
 
Delphi 5 Professional
 
#9

AW: DirectoryExists liefert falsches Ergebnis

  Alt 17. Apr 2019, 20: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
479 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: DirectoryExists liefert falsches Ergebnis

  Alt 20. Apr 2019, 01: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 16:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz