Ich hatte da mal eine Funktion geschrieben. Allerdings war das ne Arbeit von 5 Minuten oder so, weil ich mal schnell eben eine brauchte. Es sind deshalb auch keine Kommentare vorhanden.
Delphi-Quellcode:
function TranslateURL(
URL:
string; Encode: bool):
string;
var
i: integer;
tmp:
string;
begin
result := '
ERROR';
i := 1;
tmp := '
';
URL := LowerCase(
URL);
if not Encode
then
while i <= Length(
URL)
do begin
if (
URL[i] = '
%')
and (
URL[i+1]
in ['
0'..'
9', '
a'..'
f'])
and (
URL[i+2]
in ['
0'..'
9', '
a'..'
f'])
then begin
tmp := tmp + chr(StrToInt('
$' + Copy(
URL, i+1, 2)));
inc(i, 2);
end else
tmp := tmp +
URL[i];
inc(i);
end;
if Encode
then
while i <= Length(
URL)
do begin
if URL[i]
in ['
0'..'
9', '
a'..'
z', '
.', '
-', '
_']
then
tmp := tmp +
URL[i]
else
tmp := tmp + '
%' + IntToHex(ord(
URL[i]), 2);
inc(i);
end;
result := tmp;
end;
Falls irgendwas näher erklärt werden soll, einfach nachfragen. Aufgerufen wird das Ganze so:
Delphi-Quellcode:
Encode:
URL := TranslateURL(
URL, true);
Decode:
URL := TranslateURL(
URL, false);
MfG Brainstalker
[Edit] , hinzugefügt
[Edit2] jetzt sollte das mit Encode stimmen.