Delphi2009でUrlエンコードがうまくいかない

解決


yu  2011-09-26 17:52:15  No: 40970

以前こちらの掲示板でTEXT.TEXTの住所をGOOGLEMAPで表示させるという内容があり試したところ、BDS2006では、問題なく作動するのですが、DELPHI2009では、書式文字列'%%は、正しくないか引数と一致しません。とメッセージが出てまったくうまく作動しません。文字コードの違いかと思うのですが、どのように修正すればよいかが、分かりません。分かる方いらっしゃいましたら御回答お待ちしております。

//--------------------------------以下URLエンコードのコード

function UrlEncode(const AStr,AppendNoConvChars: String; Space2Plus: Boolean): String;
const
  NoConversionChars = [
    'A'..'Z','a'..'z',
    '0'..'9',
    '-','_','.','!','*','''','(',')']; // '@', '$',];
var
  Sp, Rp: PChar;
  NoConversion: set of Char;
  i: Integer;
begin
  NoConversion := NoConversionChars;
  for i := 1 to Length(AppendNoConvChars) do
    NoConversion := NoConversion + [AppendNoConvChars[i]];

  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^ = ' ') and (Space2Plus) 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;


yu  2011-09-26 20:18:04  No: 40971

自己解決しました


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加