Thema: Delphi url entschlüßeln

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 25. Jul 2002, 20:06
Moin jbg,

Zitat von jbg:
...Windows Betriebsystemen dient nur, und wirklich nur des Backslash als Trennzeichen für Ordner...
sorry, aber da irrst Du.
Unter Windows sind als Trennzeichen von Pfadelementen Slash und Backslash zugelassen (gleichberechtigt).
Der Backslash ist halt nur üblich, aber, zumindest unter Windows (32Bit) nicht zwingend.
Genau wie gerne übersehen wird, dass der Punkt auch am Anfang eines Datei oder Ordnernamens stehen darf (oder mehrere).
Probier doch mal folgendes aus (sl ist vom Typ TStringList):

Code:
sl.SaveToFile('c:\temp/diesmal mit Slash\und mit Backslash/gemischt\....Datei.txt');
Voraussetzung ist natürlich, dass der Pfad existiert.

Da, wie schon erwähnt, Borland diese Eigenart des Dateisystemes nicht berücksichtigt hat, kann man den Pfad allerdings nicht mit ForceDirectories anlegen.
Auch dass es nicht störend ist, wenn mehrere Trenner unmittelbar hintereinander stehen haben sie nicht berücksichtigt.
Folgendes macht zwar keinen Sinn, funktioniert aber (und sollte, falls man den Pfade parsen will auch berücksichtigt werden):

Code:
sl.SaveToFile('c:\temp/diesmal mit Slash\/\/\/\/und mit Backslash/gemischt\....Datei.txt');
Nochmal kurz zu den Punkten am Anfang eines Dateinamens:
Beim Durchsuchen eines Verzeichnisbaumes mit FindFirst usw. wird gerne übersehen, dass explizit nach (SearchRec.Name <> '.') and (SearchRec.Name <> '..') gefiltert werden muss und nicht nach SearchRec.Name[1] <> '.'.
Diesen Fehler sieht man, leider, oft, auch wenn er sehr oft keine Auswirkung hat. Dadurch wird's allerdings nicht richtiger.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat