AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Fehleranfääliges DirectoryExists auch in Delphi > XE 1?
Thema durchsuchen
Ansicht
Themen-Optionen

Fehleranfääliges DirectoryExists auch in Delphi > XE 1?

Ein Thema von CCRDude · begonnen am 14. Nov 2014 · letzter Beitrag vom 17. Nov 2014
Antwort Antwort
Seite 2 von 3     12 3      
hathor
(Gast)

n/a Beiträge
 
#11

AW: Fehleranfääliges DirectoryExists auch in Delphi > XE 1?

  Alt 14. Nov 2014, 16:44
An den TE:
Teste doch mal diesen Code aus XE2:
http://www.delphipraxis.net/1222644-post11.html
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#12

AW: Fehleranfääliges DirectoryExists auch in Delphi > XE 1?

  Alt 14. Nov 2014, 23:05
Soso, und wenn dieser Fehler da ist, dann ist es trotzdem ein existierendes Verzeichnis und der Rückgabewert muss true sein?
Ich meine schon. Schließlich existiert ja die Root des Share. Ob ich da reinschreiben kann ist wieder eine andere Frage.
Genau hier liegt der Hase im Pfeffer.
Die "Root des Shares" ist der Server bzw. die "DFS Farm", da kann man nie was hinschreiben. Es ist kein Ordner.
Das Share ist die Bezeichnung hinter dem Servernamen.

Also:
\\Server\ <<--- hier schreibt keiner was hin.
FileExists und DirectoryExists müssen fehlschlagen. Es kann auch kein "\\Server\." oder "\\Server\.." geben.

\\Server\Share\ <<--- hier schon (DirectoryExists muss klappen, wenn die Berechtigungen vorhanden sind)
\\Server\Share\SubDirectory\ <<--- da auch (DirectoryExists muss klappen, wenn die Berechtigungen vorhanden sind)
\\Server\Share\File <<--- hier ebenfalls (FileExists muss klappen, wenn die Berechtigungen vorhanden sind)
\\Server\Share\SubDirectory\File <<--- genau wie dort (FileExists muss klappen, wenn die Berechtigungen vorhanden sind)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#13

AW: Fehleranfääliges DirectoryExists auch in Delphi > XE 1?

  Alt 14. Nov 2014, 23:56
Das Share ist die Bezeichnung hinter dem Servernamen.
Das ist aber auch genau das, was ich aus der MSDN-Doku unter network share verstanden habe.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: Fehleranfääliges DirectoryExists auch in Delphi > XE 1?

  Alt 15. Nov 2014, 01:28
Das Share ist die Bezeichnung hinter dem Servernamen.
Das ist aber auch genau das, was ich aus der MSDN-Doku unter network share verstanden habe.
Das will auch niemand bestreiten, allerdings ist die Frage ja auch ein ganz andere:
Zitat:
Soll DirectoryExists( '\\Server' ) tatsächlich ein true zurückliefern?
Klarer Fall: Nein, denn das ist kein Verzeichnis!

Eigentlich wäre es noch zu überlegen, ob hier nicht sogar eine Exception geworfen werden müsste, weil ja gar kein gültiger Verzeichnisname angegeben wurde, aber das verwirrt hier jetzt wohl mehr.
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)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#15

AW: Fehleranfääliges DirectoryExists auch in Delphi > XE 1?

  Alt 15. Nov 2014, 07:36
Bei FileExists gibt/gab es ja eine ähnliche Abfrage. Dort hatte diese Abfrage den Sinn, im Fall einer gelockten Datei (z.b. ShareExclusiv) wieder zur alten Suche via FindFirst zurück zu fallen. Gibt es unter Windows die Möglichkeit ein Directory zu locken? Oder hat der Programmierer von DirectoryExists einfach zu viel Copy&Paste betrieben?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

AW: Fehleranfääliges DirectoryExists auch in Delphi > XE 1?

  Alt 15. Nov 2014, 11:31
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 auf \\.\COM1 oder \\.\COM1\ ein true zurück (wenn es einen Com-Port COM1 gibt) und ein \\.\COM5 oder \\.\COM5\ liefert ein false wenn es den Com-Port eben nicht gibt.

Ja, ist das denn nun ein Verzeichnis oder nicht?
Will ich diese Funktion dazu gebrauchen können auf einen Com-Port zu prüfen?
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)

Geändert von Sir Rufo (15. Nov 2014 um 14:38 Uhr)
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#17

AW: Fehleranfääliges DirectoryExists auch in Delphi > XE 1?

  Alt 15. Nov 2014, 13:11
Gibt es unter Windows die Möglichkeit ein Directory zu locken?
http://msdn.microsoft.com/en-us/libr...vs.100%29.aspx
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#18

AW: Fehleranfääliges DirectoryExists auch in Delphi > XE 1?

  Alt 17. Nov 2014, 11:33
Vielen Dank für die zahlreichen Antworten!
Die haben mich auf die richtige Fährte gebracht...

Tatsächlich geht es auf den Rechnern, wo das Problem auftritt, um Netzwerk-Pfade, war mir erst gar nicht bewusst, da es um den "Start Menu\Programs"-Ordner geht.

Habe mir nun entsprechend auch ein Testprogramm geschrieben, dass mir zu diversen Pfaden die Rückgabewerte ausgibt, und damit eure Beschreibung nachvollzogen. Werde den entsprenden Code jetzt umstellen auf FindFirst, damit habe ich das Problem anderswo schonmal in den Griff bekommen (aus anderem Grund umgestellt damals) und dann mittelfristig wohl doch mal auf XE 7 umsteigen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#19

AW: Fehleranfääliges DirectoryExists auch in Delphi > XE 1?

  Alt 17. Nov 2014, 12:15
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
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)
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#20

AW: Fehleranfääliges DirectoryExists auch in Delphi > XE 1?

  Alt 17. Nov 2014, 12:29
Mit XE 7 ist dieses Problem bereits behoben, habe ich ja direkt verglichen.

Wobei ich das Upgrade eher plane, weil diese Diskussion gezeigt hat, dass die RTL doch noch aktualisiert wird, nicht konkret für dieses Problem.

FindFirst war auch nur ein Platzhalter für eine wesenlich komplexere eigene Klasse, die Dateisysteminhalte ausliest und cacht (und nicht nur auf FindFirst, sondern auch Native-Zugriffen basiert und und ...). War nur an dieser Legacy-Code-Stelle noch nicht in Betrieb.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 10:02 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