Многострочный текст в запросе http

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by a1nt, 25 Dec 2006.

  1. a1nt

    a1nt Elder - Старейшина

    Joined:
    16 Dec 2005
    Messages:
    131
    Likes Received:
    39
    Reputations:
    25
    Нужно передать сценарию (из Delphi) запрос из Memo1.Text. Когда запрос из одной строки, все проходит на ура, но когда появляется символ перевода каретки (#13#10), ничего не получается передать в форму, так как, насколько видно в Odisseus,строка запроса рвется на переводе строки. Насколько понимаю, в Memo1.Text нужно заменить все символы #13#10 (перевод каретки) на код html (c %). Подскажите, плиз, какой код в html будет переводить строку, и как наиболее удобно, заменить в строке подстроки A на подстроки B. То есть, одной функцией, поменять в string все переводы каретки на html коды
    Заранее спасибо.
     
  2. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    %0d%0a - аналог 13,10 в HTML
    А менять надо не только эти, а все спецсимволы на их HTML-коды.
     
  3. a1nt

    a1nt Elder - Старейшина

    Joined:
    16 Dec 2005
    Messages:
    131
    Likes Received:
    39
    Reputations:
    25
    Вот кстати накатал функцию
    Code:
    function replacestr(const s, srch, replace: string): string;
    var
    i : integer;
    source: string;
    begin
    source:= s;
    result:= '';
    repeat
    i:=pos(srch, source);
    if i > 0 then begin
    result := result + copy(source,1,i-1) + replace;
    source := copy (source,i+length(srch),maxint);
    end
    else
    result := result + source;
    until i<=0;
    end;
    
    Может кому еще пригодится
    А есть готовые функции для обработки?
     
  4. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    если я не ошибаюсь, в винде есть апишка для кодирования строки по принципу urlencode.
     
  5. a1nt

    a1nt Elder - Старейшина

    Joined:
    16 Dec 2005
    Messages:
    131
    Likes Received:
    39
    Reputations:
    25
    Вот так перевод уже нормально работает.
    А какие еще символы нужно заменять?
     
  6. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Все спецсимволы желательно, такие как:
    &, =, пробел, 0x0A, 0x0D, русские буквы и многое другое.
    Короче введи текст в адресной строке браузера и посмотри, как он его закодирует. Надо так же
     
  7. a1nt

    a1nt Elder - Старейшина

    Joined:
    16 Dec 2005
    Messages:
    131
    Likes Received:
    39
    Reputations:
    25
    Кстати, с русскими буквами, почему-то проблем нет.
     
  8. a1nt

    a1nt Elder - Старейшина

    Joined:
    16 Dec 2005
    Messages:
    131
    Likes Received:
    39
    Reputations:
    25
    Code:
    function HTTPTran(St : String) : String;
    var i : Integer;
    begin
      Result:='';
      for i:=1 to length(St) do
        if St[i] in ['a'..'z','A'..'Z','0','1'..'9'] then
          Result:=Result+St[i]
        else if St[i]=' ' then
          Result:=Result+'+'
        else
          Result:=Result+'%'+IntToHex(Byte(St[i]),2);
    end;
    Вот что нашел. Вроде похоже. Буду пробовать.
     
  9. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Во. Нормальная функция) Юзай её
     
  10. a1nt

    a1nt Elder - Старейшина

    Joined:
    16 Dec 2005
    Messages:
    131
    Likes Received:
    39
    Reputations:
    25
    ага, все работает.