Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Internet Filename (URL) to Windowsfilename (https://www.delphipraxis.net/20163-internet-filename-url-windowsfilename.html)

woki 14. Apr 2004 10:44


Internet Filename (URL) to Windowsfilename
 
Hi,

folgende Situation: Ich habe eine ActiveX Komponente im Internetexplorer, die den Filenamen eines im Explorer geladenen Bildes an eine Windowsanwendung übergibt,die dieses Bild dann laden soll.

Das Bild liegt auf der lokalen Platte.

Der übergebenen Filename ist in der Form:

file:///C:/Programme/Internet%20Explorer/kontak_01.jpg,

damit kann Loadfromfile erstmal nichts anfangen. Die Konvertierung kann man zwar schnell selberschreiben, aber dabei kann man dann auch viele Dinge übersehen (Sonderzeichen etc.), dann knallts und man muß dann immer wieder nachbessern. Es muß doch aber eine API-Funktion geben, die das tut, und die habe ich bis jetzt nicht gefunden, falls sie zufällig jemand kennt,

vielen Dank.
woki

MathiasSimmack 14. Apr 2004 10:47

Re: Internet Filename (URL) to Windowsfilename
 
Das müsste evtl. mit [msdn]"InternetCanonicalizeUrl"[/msdn] zu machen sein.
[dp]"InternetCanonicalizeUrl"[/dp].

woki 14. Apr 2004 12:23

Re: Internet Filename (URL) to Windowsfilename
 
Hi,

vielen Dank für den Hinweis, sieht erfolgversprechend aus.

Grüsse
Woki

Andreas L. 14. Apr 2004 12:38

Re: Internet Filename (URL) to Windowsfilename
 
Du musst doch nur file:/// wegschneiden, / in \ umwandeln und %20 in SPACE umwandeln.

Delphi-Quellcode:
var
file : string;
begin
file:=StringReplace('file://C:/hallo.txt', 'file:///', '',[rfReplaceAll]);
file:=StringReplace(file, '/', '\',[rfReplaceAll]);
file:=StringReplace(file, '%20', ' ',[rfReplaceAll]);
TObject.loadfromfile(file);
end;
Was soll denn da passieren?

woki 14. Apr 2004 23:02

Re: Internet Filename (URL) to Windowsfilename
 
Zitat:

Zitat von onlinehome
Du musst doch nur file:/// wegschneiden, / in \ umwandeln und %20 in SPACE umwandeln.

Delphi-Quellcode:
var
file : string;
begin
file:=StringReplace('file://C:/hallo.txt', 'file:///', '',[rfReplaceAll]);
file:=StringReplace(file, '/', '\',[rfReplaceAll]);
file:=StringReplace(file, '%20', ' ',[rfReplaceAll]);
TObject.loadfromfile(file);
end;
Was soll denn da passieren?

Worum wettest Du?
You lose.
Ich hatte das oben schon erklärt, aber nochmal ausführlicher:
Angenommen ich tue das so, wie du vorschlägst, mach die Software fertig, die geht raus zur Präsentation, zum erstenmal knallts, sobald jemand zu einer Bildurl mit Umlauten surft, die Software kommt mit einer diffusen Fehlermeldung zurück, vielleicht gar nicht zu mir, der Entwickler wühlt sich durch die Software, nur in der Softwaeentwicklung brennt noch Licht, flucht (was hat der Blödmann denn hier wieder gemacht, mußte er wieder basteln, wo es das in fertig und funktionierend schon gibt?...), und findet irgendwann das Problem, ergänzt jetzt die Umlaute, (hast du dir schonmal Gedanken darüber gemacht, was ein einziger unnötiger Turnaround kostet? auf der Liste der entbehrlichen Entwickler bekommt Dein Name ein paar Pluspunkte) und kannst Du mir sagen, was dann passiert, wenn die Sache in Paris, Moskau, Tokio oder Peking auf einem PC läuft? Wenn es eine vorgefertigte Funktion gibt, die es mir abnimmt, darüber nahczugrübeln, dann will ich mich damit gar nicht erst beschäftigen.
Du hast gerade an dieser winzig kleinen Stelle ein paar Tausend Euro Folgekosten produziert, bis alle Ergänzungen für alle Sprachen dann irgendwann durch sind, bei diesem winzigen Detail des Projektes.
Ich gehe deshalb so ausführlich darauf ein, weil Du, genau wie alle unsere Youngster hier, dir über solche Dinge ernsthaft Gedanken machen solltest, sobald Du mal Software nicht nur zum Spaß entwickelst.


Grüsse
Woki

MathiasSimmack 15. Apr 2004 08:33

Re: Internet Filename (URL) to Windowsfilename
 
Zitat:

Zitat von onlinehome
Du musst doch nur file:/// wegschneiden, / in \ umwandeln und %20 in SPACE umwandeln.

Zumindest die Zeichen wie %20 braucht man IMHO nicht mit StringReplace umbauen. Auch dafür gibt´s eine Funktion, bzw. einen "???_DECODE"-Parameter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:57 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