Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Многострочный текст в запросе http (https://forum.antichat.xyz/showthread.php?t=29904)

a1nt 26.12.2006 00:14

Многострочный текст в запросе http
 
Нужно передать сценарию (из Delphi) запрос из Memo1.Text. Когда запрос из одной строки, все проходит на ура, но когда появляется символ перевода каретки (#13#10), ничего не получается передать в форму, так как, насколько видно в Odisseus,строка запроса рвется на переводе строки. Насколько понимаю, в Memo1.Text нужно заменить все символы #13#10 (перевод каретки) на код html (c %). Подскажите, плиз, какой код в html будет переводить строку, и как наиболее удобно, заменить в строке подстроки A на подстроки B. То есть, одной функцией, поменять в string все переводы каретки на html коды
Заранее спасибо.

_Great_ 26.12.2006 00:21

%0d%0a - аналог 13,10 в HTML
А менять надо не только эти, а все спецсимволы на их HTML-коды.

a1nt 26.12.2006 00:26

Вот кстати накатал функцию
Код:

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;

Может кому еще пригодится
Цитата:

А менять надо не только эти, а все спецсимволы на их HTML-коды.
А есть готовые функции для обработки?

_Great_ 26.12.2006 00:28

Цитата:

А есть готовые функции для обработки?
если я не ошибаюсь, в винде есть апишка для кодирования строки по принципу urlencode.

a1nt 26.12.2006 00:30

Вот так перевод уже нормально работает.
А какие еще символы нужно заменять?

_Great_ 26.12.2006 00:31

Все спецсимволы желательно, такие как:
&, =, пробел, 0x0A, 0x0D, русские буквы и многое другое.
Короче введи текст в адресной строке браузера и посмотри, как он его закодирует. Надо так же

a1nt 26.12.2006 00:36

Цитата:

русские буквы
Кстати, с русскими буквами, почему-то проблем нет.

a1nt 26.12.2006 00:41

Код:

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;

Вот что нашел. Вроде похоже. Буду пробовать.

_Great_ 26.12.2006 00:44

Во. Нормальная функция) Юзай её

a1nt 26.12.2006 00:45

ага, все работает.


Время: 10:40