Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ein Konzept für korrekte Pfadprüfung, oder ... (https://www.delphipraxis.net/170480-ein-konzept-fuer-korrekte-pfadpruefung-oder.html)

Popov 19. Sep 2012 16:12

Ein Konzept für korrekte Pfadprüfung, oder ...
 
... wie viel Überprüfung auf Fehler ist genug?

Nehmen wir an ich will einen neuen Ordner erstellen. Ich hab den Pfad "c:\beispiel\test" und will einen weiteren Unterordner anlegen. In dem Editfeld steht "c:\beispiel\test" und der Nutzer kann den Pfad um einen weiteren Ordner erweitern. Dank ForceDirectories braucht man sich um nichts weiter zu kümmern.

Ich persönlich mag keine Systemfehlermeldungen, ich fange evtl. Fehler gerne vorher selbst ab.

Löscht der Nutzer den Editeintrag, so dass Pfad ein leerer String ist, kann ich das leicht überprüfen.

Ist der Pfad vor der Erweiterung ok, gibt es keinen Fehler.

Was aber tun wenn der Nutzer in das Editfeld Unsinn eingibt und der Pfad nun "jhskdfhiues" lautet. Wie kann man sowas auf einen korrekten Pfad prüfen? DirectoryExists geht nicht, da selbst wenn der Pfad korrekt wäre er neue Unterordner enthält und somit nicht funktioniert. Oder einfach lassen und auf die Systemmeldung warten? Ein Möglichkeit wäre alles zu zerlegen und den Pfad Ordner für Ordner auf Plausibilität zu prüfen?

Jumpy 19. Sep 2012 16:24

AW: Ein Konzept für korrekte Pfadprüfung, oder ...
 
Es gibt glaub ich so eine Funktion IsUNCPath oder so. Damit kann man den Fall schonmal prüfen. Wie man da aber genau prüft ob der UNC-Pfad auch Sinn macht, weiß ich gerade nicht.

Für nicht UNC-Pfade könnte man noch aus dem Pfad die Directory extrahieren 'd:\' und vllt. da auf exists prüfen. Das ist ja das minimale was gehen muss.

Uwe Raabe 19. Sep 2012 16:36

AW: Ein Konzept für korrekte Pfadprüfung, oder ...
 
Zitat:

Zitat von Popov (Beitrag 1183602)
Was aber tun wenn der Nutzer in das Editfeld Unsinn eingibt und der Pfad nun "jhskdfhiues" lautet. Wie kann man sowas auf einen korrekten Pfad prüfen?

Wäre das denn überhaupt ein gültiger Pfadname? Windows würde zumindest nicht darüber meckern, wenn man das als relativen Pfad behandelt. Ob es ein prinzipiell gültiger Pfadname ist kann mittels TPath.GetFullPath geprüft werden, das ggf. eine Exception auswirft.

Damit wäre es aber immer noch möglich, daß eine gleichnamige Datei bereits existiert und der Pfad somit nicht angelegt werden kann.

Popov 19. Sep 2012 16:46

AW: Ein Konzept für korrekte Pfadprüfung, oder ...
 
Auch das noch. Gerade habe ich überlegt den Pfad von vorne Ordner für Ordner zu prüfen, aber du hast Recht, das muß ich nun auch einkalkulieren.

p80286 19. Sep 2012 17:43

AW: Ein Konzept für korrekte Pfadprüfung, oder ...
 
Uwe hat ja schon auf die relativen Pfade hingewiesen, dann mußt Du wohl auch noch
Code:
..\.\.\mfgvhergse
auseinander rupfen.

Gruß
K-H

mjustin 19. Sep 2012 18:45

AW: Ein Konzept für korrekte Pfadprüfung, oder ...
 
Sonstige Prüfungen:

unter Windows sind bestimmte Namen reserviert und können nicht als Verzeichnis- oder Dateinamen verwendet werden, zum Beispiel
  • COM1, 2, 3 ...
  • LPT1, 2, 3 ...
  • CON
  • PRN
  • AUX
  • NUL

Fehlermeldung von Windows: der angegebene Gerätename ist unzulässing

Hobby-Programmierer 20. Sep 2012 20:53

AW: Ein Konzept für korrekte Pfadprüfung, oder ...
 
Boah :shock: ... wollte nur kurz obige Aussage verifizieren und habe ein Verzeichnis mit dem Namen 'COM1' erstellt. Erstellen ging, löschen nimmer. Muss ich wohl oder übel mit ner LiveCd ran 8-)

Edit: System Win 7 Pro 64


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz