Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi [D2009] HTTPEncode (aus HTTPApp.pas) funktioniert nicht (https://www.delphipraxis.net/141096-%5Bd2009%5D-httpencode-aus-httpapp-pas-funktioniert-nicht.html)

Hedge 2. Okt 2009 10:14


[D2009] HTTPEncode (aus HTTPApp.pas) funktioniert nicht
 
Ich habe die HTTPEncode-Funktion aus der Unit HTTPApp.pas umgeschrieben so, dass ich in Delphi 2009 nicht mit AnsiStrings rumfuddeln muss:

Delphi-Quellcode:
function HTTPEncode(const AStr: String): String;
// The NoConversion set contains characters as specificed in RFC 1738 and
// should not be modified unless the standard changes.
const
  NoConversion = ['A'..'Z','a'..'z','*','@','.','_','-',
                  '0'..'9','$','!','''','(',')'];
var
  Sp, Rp: PChar;
begin
  SetLength(Result, Length(AStr) * 3);
  Sp := PChar(AStr);
  Rp := PChar(Result);
  while Sp^ <> #0 do
  begin
    if Sp^ in NoConversion then
      Rp^ := Sp^
    else
      if Sp^ = ' ' then
        Rp^ := '+'
      else
      begin
        FormatBuf(Rp^, 3, '%%%.2x', 6, [Ord(Sp^)]);
        Inc(Rp,2);
      end;
    Inc(Rp);
    Inc(Sp);
  end;
  SetLength(Result, Rp - PChar(Result));
end;
Leider tritt jedes Mal wenn Zeichen kodiert werden müssen (z.B. bei dem String 'Lala & Po - Winke Winke') folgender Fehler auf:

Zitat:

EConvertError mit Meldung 'Format '%%' ungültig oder nicht kompatibel mit Argument'
bei der Zeile 'Inc(Rp,2);

Was läuft da verkehrt?

TKC 2. Okt 2009 11:18

Re: [D2009] HTTPEncode (aus HTTPApp.pas) funktioniert nicht
 
Warum benutzt du nicht die überladene Funktion die mit normalen Strings benutzt werden kannn (ist in der gleichen Unit) ????


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