Pagina 1 van 1

Delpi/Lazarus/FPC – How to encode en decode een URL (2 functies)

Delpi/Lazarus/FPC – How to encode en decode een URL (2 functies)

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.
Voorbeelden: "MacOS X - Jouw vraag", "MS Word - Jouw Tip of Truc".

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent.
Posts/Reacties hebben geen tegenhanger in de andere taal.




RSS Feed

Home Forums Software Development Delphi, Lazarus, Free Pascal Delpi/Lazarus/FPC – How to encode en decode een URL (2 functies)

Dit onderwerp bevat 0 reacties, heeft 1 stem, en is het laatst gewijzigd door  hans 9 maanden, 3 weken geleden.

1 bericht aan het bekijken (van in totaal 1)
  • Auteur
    Berichten
  • 4796

    hans
    Sleutelbeheerder

    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[i - 1] in ['A'..'Z', 'a'..'z', '0'..'9', '-', '_', '~', '.', ':', '/']) then
          result := result + '%' + inttohex(ord(source[i - 1]), 2)
        else
          result := result + source[i - 1];
    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[i]+source[i+1]));
                i:=i+2;
              end;
            except
            end
          else
            result := result + source[i-1];
          inc(i);
        end;
    end;     
1 bericht aan het bekijken (van in totaal 1)



Je moet ingelogd zijn om reacties te kunnen plaatsen voor dit onderwerp.