function HTTPEncode(const AStr: string): string; const NoConversion = ['A'..'Z', 'a'..'z', '*', '@', '.', '_', '-']; var S,R: PChar; begin SetLength(Result, Length(AStr) * 3); S:= PChar(AStr); R:= PChar(Result); while S^ <> #0 do begin if S^ in NoConversion then R^ := S^ else if S^ = ' ' then R^ := '+' else begin FormatBuf(R^, 3, '%%%.2x', 6, [Ord(S^)]); Inc(R, 2); end; Inc®; Inc(S); end; SetLength(Result, R - PChar(Result)); end; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text := HTTPEncode(Edit1.Text); end;
|