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