URL кодирование строки

Материал из DRKB


{ **** UBPFD *********** by kladovka.net.ru ****
>> URL кодирование строки

Функция производит так называемое URL кодирование строк для
использования в http запросах. Т.е. все алфавитно-цифровые
символы и знак подчеркивания '_' остаются неизменными,
пробел заменяется на '+', а все остальные символы на знак
процента '%' с двумя шестнадцатеричными цифрами.

Зависимости: Windows

Copyright:   Dimka Maslov
Дата:        27 мая 2002 г.
********************************************** }

function UrlEncode(Str: string): string;

function CharToHex(Ch: Char): Integer;
asm
    and eax, 0FFh
    mov ah, al
    shr al, 4
    and ah, 00fh
    cmp al, 00ah
    jl @@10
    sub al, 00ah
    add al, 041h
    jmp @@20
@@10:
    add al, 030h
@@20:
    cmp ah, 00ah
    jl @@30
    sub ah, 00ah
    add ah, 041h
    jmp @@40
@@30:
    add ah, 030h
@@40:
    shl eax, 8
    mov al, '%'
end;

var
  i, Len: Integer;
  Ch: Char;
  N: Integer; P: PChar;
begin
  Result := '';
  Len := Length(Str);
  P := PChar(@N);
  for i := 1 to Len do
  begin
    Ch := Str[i];
    if Ch in ['0'..'9', 'A'..'Z', 'a'..'z', '_'] then
      Result := Result + Ch
    else
    begin
      if Ch = ' ' then
        Result := Result + '+'
      else
      begin
        N := CharToHex(Ch);
        Result := Result + P;
      end;
    end;
  end;
end;


Пример использования:

procedure TForm1.Button1Click(Sender: TObject);
var
  S: string;
begin
  S := UrlEncode('Мастера Delphi');
  ShellExecute(Handle, 'open',
    PChar('http://www.yandex.ru/yandsearch?text='+S), '', '', SW_SHOWNORMAL);
end;


Author: Dimka Maslov
ID: 03373


См. также[править | править код]