Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Непечатные символы в ответе idHttp.post(...)


Автор: Eva_Adamova 21.5.2007, 02:32
метод  IdHttp.post(либо Get, неважно) возвращает ответ сервера в виде строки.
Если эту строку добавить в мемо  
Код

примерно
Memo1.lines.add(IdHttp.post('server'...))

То ответ отображается нормально, с переносами.
Однако если создать StringList, добавить в него эту строку и отобразить StringList в мемо, то получается куча непечатных символов "|"
Код

StrList:=TStringList.Create;
  try  
    StrList.Add(IdHttp.post('server'...));
    Memo1.Lines:=StrList;
  finally
    StrList.Free;

Я выбрала StringList для хранения ответа сервера для того, чтобы производить там построчные действия.
Мне нужно преобразовать ответ сервера в нормальный текст с переносами, так, как это делает Memo или, скажем, Опера при просмотре исходного текста. 

Что здесь можно придумать?

Автор: aktuba 21.5.2007, 06:46
Вообще-то, намного проще сделать так:
Код

  str := IdHTTP.Post('server', ...);
  Memo1.Lines.Text := str;


или

Код

StrList := TStringList.Create;
try
  str := IdHTTP.Post('server', ...);
  StrList.Text := str;
  ...
finally
  StrList.Free;
end;

Автор: Eva_Adamova 21.5.2007, 07:19
Цитата(aktuba @  21.5.2007,  15:46 Найти цитируемый пост)

  StrList := TStringList.Create;
try  str := IdHTTP.Post('server', ...);
  StrList.Text := str;
finally  
  StrList.Free;
end;


В том до всё и дело, что при таком подходе в StringList - 1 строка, т.е. 
Код

StrList := TStringList.Create;
try
  str := IdHTTP.Post('server', ...);
  StrList.Text := str;
  Showmessage(inttostr(StrList.Count)); //Здесь всего одна строка!


А мне нужна многострочность в StringList'е. Можно конечно сначала грузить в Мемо, затем из мемо в StringList, тогда всё получается, но неужели нельзя обойтись без лишнего компонента.

Автор: aktuba 21.5.2007, 08:23
Значит Вам ответ приходит в виде одной строки. У меня так работает на ура =))) Демо код приложил - попробуйте =)))

Автор: aktuba 21.5.2007, 16:03
Ну вот так всегда... Как проблема - люди помогите. А как решили проблему - так даже тему не отметили, что проблема решена. Хоть бы сказали что к чему - другим ведь тоже может когда-нибудь помочь =)

Автор: Eva_Adamova 21.5.2007, 23:16
aktuba, не хочу никого обидеть, но если бы вы посмотрели налево от поста, то увидели бы мой город, а это значит, что в тот момент, когда вы написали мне ответ, я крепко спала в час ночи. Поэтому и не могла ответить smile 

Насчёт решения - большое спасибо!!! Всё работает, ключевой момент был в использовании свойства Text, вместо метода Add применительно к StringList. Честно говоря, совсем запамятовала о Text)))
Опишу подробнее:
Код

//Так НЕ работает
  StrList := TStringList.Create;
  try  
    StrList.Add(IdHttp.post('server'...)); //Сейчас в списке ОДНА строка

//Так  РАБОТАЕТ
  StrList := TStringList.Create;
  try  
    StrList.Text:=(IdHttp.post('server'...)); //Сейчас в списке многострочный текст

Автор: aktuba 21.5.2007, 23:51
Цитата

aktuba, не хочу никого обидеть, но если бы вы посмотрели налево от поста, то увидели бы мой город, а это значит, что в тот момент, когда вы написали мне ответ, я крепко спала в час ночи. Поэтому и не могла ответить smile 


Да я не в обиде. И не про Вас это было, а вообще... Просто люди на форуме так привыкли поступать - а это плохо...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)