![]() |
url entschlüßeln
Hallo wie bekomme ich mit delphi aus dem String
![]() |
Weißt du, wie lang der Dateiname ist?
Chris |
Moin TheOmega,
nimm mal einen Button, ein Edit und dann probiers mal im OnClick des Button hiermit:
Code:
Das mal als Beipspiel.
ShowMessage(copy(Edit1.Text,LastDelimiter('/',Edit1.Text)+1,Length(Edit1.Text)));
Theoretisch müsste sich auch ExtractFileName eignen, aber leider hat Borland dabei übersehen, das der Slash (/) ebenso als Trennzeichen dienen darf wie der Backslash. (und dass sogar gemischt) |
Zitat:
|
@Christian Seehase deine Lösung funzt, danke.
|
Moin jbg,
Zitat:
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:
Voraussetzung ist natürlich, dass der Pfad existiert.
sl.SaveToFile('c:\temp/diesmal mit Slash\und mit Backslash/gemischt\....Datei.txt');
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:
Nochmal kurz zu den Punkten am Anfang eines Dateinamens:
sl.SaveToFile('c:\temp/diesmal mit Slash\/\/\/\/und mit Backslash/gemischt\....Datei.txt');
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. ;-) |
Nur noch als abschliessender Tipp: Du solltest in den URLs auch auf Fragezeichen (?) und Rauten (#) achten, da diese direkt nach dem Dateinamen auf Parameter bzw. interne Dokumentziele verweisen können.
:cat: |
Delphi-Quellcode:
function extractURLFile(URL:STRING):STRING;
var I,iLast,iFirst:INTEGER; begin iLast:=LENGTH(URL)+1; iFirst:=1; FOR I:=LENGTH(URL) DOWNTO 1 DO BEGIN IF URL[I] = '/' THEN BEGIN iFirst:=I+1; BREAK; END ELSE IF URL[I] = '?' THEN iLast:=I; END; Result:=COPY(URL,iFirst,iLast-iFirst); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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