Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Синтаксис , Шифрование



Автор: Dimka Maslov
WEB-сайт: http://delphibase.endimus.com

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

Зависимости: Windows
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
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 World');
  ShellExecute(Handle, 'open',
    PChar('http://www.yandex.ru/yandsearch?text=' + S), '', '', SW_SHOWNORMAL);
end;
{ **** UBPFD *********** by delphibase.endimus.com ****
>> URL декодирование строки

Функция выполняет URL декодирование строки, заменяя все подстроки вида
'%HH', где 'HH' - шестнадцатеричные цифры, на соответствующие символы.

Зависимости: Windows
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov
Дата:        27 мая 2002 г.
***************************************************** }

function UrlDecode(Str: string): string;

  function HexToChar(W: word): Char;
  asm
   cmp ah, 030h
   jl @@error
   cmp ah, 039h
   jg @@10
   sub ah, 30h
   jmp @@30
@@10:
   cmp ah, 041h
   jl @@error
   cmp ah, 046h
   jg @@20
   sub ah, 041h
   add ah, 00Ah
   jmp @@30
@@20:
   cmp ah, 061h
   jl @@error
   cmp al, 066h
   jg @@error
   sub ah, 061h
   add ah, 00Ah
@@30:
   cmp al, 030h
   jl @@error
   cmp al, 039h
   jg @@40
   sub al, 030h
   jmp @@60
@@40:
   cmp al, 041h
   jl @@error
   cmp al, 046h
   jg @@50
   sub al, 041h
   add al, 00Ah
   jmp @@60
@@50:
   cmp al, 061h
   jl @@error
   cmp al, 066h
   jg @@error
   sub al, 061h
   add al, 00Ah
@@60:
   shl al, 4
   or al, ah
   ret
@@error:
   xor al, al
  end;

  function GetCh(P: PChar; var Ch: Char): Char;
  begin
    Ch := P^;
    Result := Ch;
  end;

var
  P: PChar;
  Ch: Char;
begin
  Result := '';
  P := @Str[1];
  while GetCh(P, Ch) <> #0 do
  begin
    case Ch of
      '+': Result := Result + ' ';
      '%':
        begin
          Inc(P);
          Result := Result + HexToChar(PWord(P)^);
          Inc(P);
        end;
    else
      Result := Result + Ch;
    end;
    Inc(P);
  end;
end;

Анализ кода программы на Delphi для URL-кодирования и декодирования:

Функция UrlEncode Функция UrlEncode принимает строку в качестве входного параметра и возвращает URL-кодированную строку. Она работает, перебирая каждый символ в входной строке и заменявая некоторые символы на соответствующие кодированные значения.

  • Если символ является алфавитным (0-9, A-Z, a-z) или подчерки (_), он остается неизмененным.
  • Если символ является пробелом (' '), он заменяется на '+'.
  • Для всех других символов они заменяются на '%' с двумя шестнадцатеричными цифрами, представляющими ASCII-код символа.

Функция использует вспомогательную функцию CharToHex для преобразования каждого неалфавитного символа в соответствующее кодированное значение. Эта функция использует ассемблерный язык для выполнения преобразования.

Функция UrlDecode Функция UrlDecode принимает URL-кодированную строку в качестве входного параметра и возвращает оригинальную строку. Она работает, перебирая каждый символ в входной строке и заменявая некоторые символы на соответствующие декодированные значения.

  • Если символ является '+' или '%', он заменяется на пробел (' ') или декодированное значение, соответственно.
  • Для всех других символов они остаются неизмененными.

Функция использует два вспомогательных функции: HexToChar для преобразования шестнадцатеричных цифр в ASCII-символы и GetCh для извлечения каждого символа из входной строки.

Пример использования Пример кода демонстрирует, как использовать функции UrlEncode и UrlDecode. Он создает форму с кнопкой, которая, когда нажата, кодирует строку "Delphi World" с помощью UrlEncode и затем использует кодированную строку для построения URL.

В целом, это программное обеспечение предоставляет основное реализацию URL-кодирования и декодирования в Delphi, которое может быть полезно для разработки веб-приложений и других приложений, требующих работы с URL.

URL кодирование строки - функция производит так назваемое URL кодирование строк для использования в http запросах.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Шифрование ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-04-04 02:49:00/0.0056660175323486/0