Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2009, 01:36   #1
Kukkk
Форумчанин
 
Регистрация: 28.06.2007
Сообщений: 123
По умолчанию post запрос, результат разбить на строки

Всем привет! Пишу программу, которая должна подгружать с сервера свои конфиги. Сервер написал на пхп, все супер. Теперь такой вопрос- сервер генерирует конфиги в ответ на правильный пост запрос с логином и паролем, но не могу растащить их на строки из TStringStream. Мне бы преобразовать его в массив из string, либо как-то получать строки по-отдельности из самого TStringStream. Есть конечно метод-загнать все в невидимый мемо, но это не по науке. Меня скоро забанит яндекс за домогательство, прошу ваших мыслей по данной проблеме. Всем спасибо.
Код:
Function Getinfo(login, password : string) : boolean;     ///ПОЛУЧЕНИЕ ИНФО С СЕРВЕРА
var
a: TStringStream;
b: TStringList;
i: integer;
buf: string;
begin
  i:=1;
  a:= TStringStream.Create('');
  b:= TStringList.Create;
  b.add('login='+login);
  b.add('password='+password);
  form1.IdHTTP1.Post('http://XXXXXXX/login.php', b, x);
  if a.DataString='login_error' then Getinfo:=false
  else
  begin
   Getinfo:=true;
   while not(a[i]='') do
    begin
     buf:=a[i];
     i:=i+1;
     if a[i]='yes' then  makenewtask(true,count,buf) else makenewtask(false,count,buf);
    end;
  end;
  a.Free;
  b.free;
end;

Последний раз редактировалось Stilet; 20.08.2009 в 08:29.
Kukkk вне форума Ответить с цитированием
Старый 20.08.2009, 07:49   #2
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Ну, во-первых учитесь код вставлять в специальные теги, кнопка:

Во-вторых. Вот я навоял для метода get. т.к. мне нечего было серверу отправлять. Тут важно какая у вас версия Indy, у меня 10 (Delphi 2006).
Код:
procedure Tmain_form.httpClick(Sender: TObject);
var
stream: tStream;
strings: tStringList;
begin
   stream := tMemoryStream.Create;
   try
   idHTTP1.Get('http://programmersforum.ru/showthread.php?t=60677', stream);
   stream.Position := 0;
   strings := tStringList.Create;
   strings.LoadFromStream(stream);
   memo1.Lines.Assign(strings);
   strings.Free;
   finally
   stream.Free;   
   end;
end;
Ответ сохраняется в обычный поток, а оттуда загружается в tStringList. А а с последним можно работать уже как с набором строк. Я его в Memo загоняю, ну так, для примера.

----------------------------------------
Вот для Post в Delphi7 (Indy 9)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
stream: tStream;
strings: tStringList;
begin
   stream := tMemoryStream.Create;
   strings := tStringList.Create;
   strings.Add('property=value');
   try
   idHTTP1.Post('http://programmersforum.ru/showthread.php?t=60677', strings, stream);
   stream.Position := 0;
   strings.LoadFromStream(stream);
   memo1.Lines.Assign(strings);
   finally
   stream.Free;
   strings.Free;
   end;
end;

Последний раз редактировалось Altera; 20.08.2009 в 07:55.
Altera вне форума Ответить с цитированием
Старый 20.08.2009, 17:01   #3
Kukkk
Форумчанин
 
Регистрация: 28.06.2007
Сообщений: 123
По умолчанию

Altera, спасибо! Все заработало по вашему примеру.
Kukkk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
POST запрос DeDoK Работа с сетью в Delphi 6 12.07.2009 00:48
POST запрос в VBA motorway Microsoft Office Excel 1 04.07.2009 01:24
Post запрос с помощью Webrowser eldar Работа с сетью в Delphi 0 28.08.2008 17:33
post запрос Editor Работа с сетью в Delphi 4 20.04.2008 14:01