Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi relative URL in absolute URL umwandeln (https://www.delphipraxis.net/109377-relative-url-absolute-url-umwandeln.html)

kcx 29. Feb 2008 00:10


relative URL in absolute URL umwandeln
 
Hallo,

Ich suche eine Funktion oder eine Komponente, die eine relative URL in eine absolute URL umwandelt.

Beispiel:

Ich habe eine Base URL:
http://www.test.de/
oder
http://www.test.de/abc/123

und die relative URL:
/pfad/abc/docs/test.txt

Daraus sollte dann:
http://www.test.de/pfad/abc/docs/test.txt

werden.

Jetzt könnte man die URLs natürlich einfach zusammenfügen, aber es gibt ja auch sowas:
../pfad/test
oder
../../../abc/test/
oder
./pfad

etc...

Danke für jede Hilfe! :chat:

deep_thought 29. Feb 2008 05:07

Re: relative URL in absolute URL umwandeln
 
eine derartige funktion kenne ich nicht ...
aber könnte man nicht einfach für jeden "../" am Anfang einfach eine ebene höher gehen (also mit copy und pos alles inklusive und nach dem letzten "/" wegschneiden) und dann die URLs einfach zusammenfügen?
"./" kannste ignorieren (also einfach nur abschneiden)

mfg deep_thought

marabu 29. Feb 2008 06:45

Re: relative URL in absolute URL umwandeln
 
Moin,

die gesuchte Funktion heißt CoInternetCombineUrl() und lebt in der Unit UrlMon:

Delphi-Quellcode:
function CombineUrl(const baseUrl, url: WideString): WideString;
var
  dwLength: Cardinal;
begin
  SetLength(Result, 1024);
  if Succeeded({UrlMon.}CoInternetCombineUrl(PWideChar(baseUrl), PWideChar(url),
    CF_NULL, PWideChar(Result), Length(Result), dwLength, 0)
  ) then SetLEngth(Result, dwLength)
    else Result := '';
end;
Freundliche Grüße

DelphiKlaus 29. Feb 2008 06:48

Re: relative URL in absolute URL umwandeln
 
Hey,

setze die Angaben einfach mal hintereinander. Wenn Du z.B. sowas hast

Delphi-Quellcode:
http://www.test.de/abc/123
und willst

daran

Delphi-Quellcode:
../../pfad/test
anhängen, sollte das eigentlich funktionieren:

Delphi-Quellcode:
http://www.test.de/abc/123/../../pfad/test
Du musst nur daruf achten, dass der erste Teil auch mit einem Slash abgeschlossen ist (IncludeTrailungBackSlash). Bei lokalen Pfaden funktioniert das. Bei URLs habe ich es nicht probiert.

MfG

Klaus

Tormentor32 29. Feb 2008 06:58

Re: relative URL in absolute URL umwandeln
 
Wenn ich mich nicht täusche, dann kommt man mit
Code:
~/
ins Stammverzeichnis. Habe ich jedenfalls gehört!

Khabarakh 29. Feb 2008 10:40

Re: relative URL in absolute URL umwandeln
 
Zitat:

Zitat von Tormentor32
Wenn ich mich nicht täusche, dann kommt man mit
Code:
~/
ins Stammverzeichnis. Habe ich jedenfalls gehört!

Das kenne ich nur von ASP.Net. http://delphipraxis.net/foo/~/index.html funktioniert jedenfalls nicht ;) .

kcx 29. Feb 2008 12:03

Re: relative URL in absolute URL umwandeln
 
Vielen Dank an alle, besonders an marabu. :wink:

SirThornberry 29. Feb 2008 12:19

Re: relative URL in absolute URL umwandeln
 
Zitat:

Zitat von Tormentor32
Wenn ich mich nicht täusche, dann kommt man mit
Code:
~/
ins Stammverzeichnis. Habe ich jedenfalls gehört!

Die Tilde steht für das Homeverzeichnis unter Linux und wird auch nur dann entsprechend ausgewertet wenn der Webserver entsprechend konfiguriert ist.


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