Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.



Deel:
Meldingen
Alles wissen

[Opgelost] Delpi/Lazarus/FPC - How to encode en decode een URL (2 functies)

1 Berichten
1 Gebruikers
0 Reactions
1,781 Bekeken
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2864
Topic starter  

Na wat gerommeld, hier 2 functies die een URL kan coderen (b.v. spatie -> %20) en decoderen (dus %20 weer terug naar spatie).


  URLEncode
  
  Encodes string to be suitable as an URL. (ie. replaces for example a space with %20)
  Example: myencodeURL:=URLEncode(myURL);
}
function URLEncode(s: string): string;
var
  i: integer;
  source: PAnsiChar;
begin
  result := '';
  source := pansichar(s);
  for i := 1 to length(source) do
    if not (source in ['A'..'Z', 'a'..'z', '0'..'9', '-', '_', '~', '.', ':', '/']) then
      result := result + '%' + inttohex(ord(source), 2)
    else
      result := result + source;
end;

{
  URLDecode
  Decodes string to be suitable as an URL.(ie. returns for example a %20 back to space)
  Example: myencodeURL:=URLEncode(myURL);
}
function URLDecode(s: string): string;
var
  i,lengthsource: integer;
  source: PAnsiChar;
begin
  result := '';
  source := pansichar(s);
  lengthsource := length(source);
  i:=1;
  while (i<=lengthsource) do
    begin
      if source[i-1] <> '%' then
        result := result + source[i-1]
      else if (source[i-1] = '%') and (i+1<=lengthsource) then
        try
          begin
            result := result + Chr(Hex2Dec('$'+source+source[i+1]));
            i:=i+2;
          end;
        except
        end
      else
        result := result + source[i-1];
      inc(i);
    end;
end;     

   
BeantwoordenCiteren
Deel: