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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2014, 12:49   #1
Cruzel
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 31
По умолчанию Сделать выполнение кода пошаговым

Здравствуйте. Не могу придумать, как реализовать пошаговое выполнение функций. Есть компонент REST-client, который посылает запросы. Необходимо, когда выполнится один запрос и будут получены определённые данные - посылался следующий. Как реализовать?
Cruzel вне форума Ответить с цитированием
Старый 28.10.2014, 13:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Чтоб ответить на твой вопрос нужно знать как работает компонент и как ты делаешь запросы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2014, 13:15   #3
Cruzel
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Чтоб ответить на твой вопрос нужно знать как работает компонент и как ты делаешь запросы.
Работает как обычный компонент IdHTTP, из вкладки Indy Client. Отправляет POST-запросы, в формате json.

Отправляю запрос так:

Код:
RESTClient1->Params->ParameterByIndex(0)->Value=id_group; //id группы или человека
RESTClient1->Params->ParameterByIndex(1)->Value=IdZapros2->URL->ParamsEncode(message->Text); //текст сообщения
RESTClient1->Params->ParameterByIndex(2)->Value=token; //токен
RESTClient1->Params->ParameterByIndex(3)->Value=add; //добавления (видео, ссылки и прочая муть)
idvk=id_group;
counter=counter+1;
RESTRequest1->Resource="wall.post"; //метод
RESTRequest1->Execute(); //запуск
После загрузки необходимо отпарсить данные. Парсю так:

Код:
TJSONObject *jObj = static_cast<TJSONObject*>(TJSONObject::ParseJSONValue(RESTResponse1->Content));
//TJSONObject *jItem2 = static_cast<TJSONObject*>(jObj->Get("error")->JsonValue); //отлавливаю ошибку
TJSONObject *jItem = static_cast<TJSONObject*>(jObj->Get("response")->JsonValue);
	if (jItem != NULL){
	String post = jItem->Get("post_id")->JsonValue->Value();
	String idvk2 = idvk.Delete(1, 1);
	Console->Lines->Add("Пост успешно добавлен http://vk.com/wall-"+idvk2+"_"+post);
	counter=counter+1;
У компонента есть событие RESTRequest1AfterExecute. И исполняется оно сразу после отправки запроса, не дожидаясь загрузки.

Как дождаться загрузки ответа?

Последний раз редактировалось Cruzel; 28.10.2014 в 13:17.
Cruzel вне форума Ответить с цитированием
Старый 28.10.2014, 13:16   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Запоминать какой запрос был послан, при получении ответа на базе этого решаем какой запрос послать дальше, запоминаем, посылаем ну и далее по кругу.

Так же читаем про конечные автоматы.
waleri вне форума Ответить с цитированием
Старый 28.10.2014, 13:18   #5
Cruzel
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 31
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Запоминать какой запрос был послан, при получении ответа на базе этого решаем какой запрос послать дальше, запоминаем, посылаем ну и далее по кругу.

Так же читаем про конечные автоматы.
Можно пример кода?
Cruzel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение кода по адресу pufystyj Общие вопросы C/C++ 2 08.09.2012 20:47
Странное выполнение кода. Taler Общие вопросы C/C++ 15 04.04.2012 15:18
Выполнение PHP кода Sprat PHP 1 31.01.2012 15:12
Парсер, выполнение кода. zumm Общие вопросы Delphi 27 30.06.2010 13:29
Выполнение кода из файла.. NSvirus Паскаль, Turbo Pascal, PascalABC.NET 25 14.06.2009 00:56