|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
IdTelnet нужна помошь
Не судите строго я в программировании новичок самоучка.
Проблема вот такая Через телнет соедняюсь с ххх приложением и шлю ему запросы. Если получать ответ на запросы в обработчике событий TForm1.IdTelnet1DataAvailable то ответ приходит и нет никаких проблем но мне получить ответ в глобальной переменной типа String я делаю это так (пример ниже) и после вызова процедуры Send_Telnet(command); в переменной String_response пустота. Помогите пожалуйста , уже начал головой бится об стену , отблагодарю как смогу. PHP код:
если закоментировать в процедуре procedure TForm1.Send_Telnet(command: string); строку String_response:=''; и через Button отправлять запрос , то возврат ответа появляется только пр нажатии на кнопку второй раз PHP код:
Последний раз редактировалось Siropchik, 07.02.2012 в 15:23. |
#2
|
||||
|
||||
ну так и объяви глобальную переменную и в IdTelnet1DataAvailable присвой ей Buffer:
Код:
var Form1: TForm1; GBuffer: String; implementation {$R *.dfm} procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet; const Buffer: String); begin GBuffer:= Buffer; Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Так у меня она обьявленна
PHP код:
|
#4
|
||||
|
||||
что-то типа этого для начала:
Код:
procedure TForm1.Send_Telnet(command: string); var i : LongWord; begin IdTelnet1.Host := 'localhost'; IdTelnet1.port := 6060; if not(idTelnet1.Connected) then try IdTelnet1.Connect; except ShowMessage('not connect'); end; while not idTelnet1.Connected do Sleep(0); Begin String_response:=''; Status_response:= False; idTelnet1.WriteLn(command); while not Status_response do Sleep(0); end; end; Пишу программы за еду. __________________ |
#5
|
|||
|
|||
С этим кодом программа зависает
PHP код:
Последний раз редактировалось Siropchik, 07.02.2012 в 16:01. |
#6
|
||||
|
||||
значит IdTelnet1DataAvailable не наступает и Status_response:= True; в нем не срабатывает.
Пишу программы за еду. __________________ |
#7
|
|||
|
|||
А почему while not Status_response , так как в этой переменной значение False то цикл должен прерватся по достижению значения TRUE а не False или я не правильно понимаю http://www.delphisources.ru/pages/fa...While.php.html
Последний раз редактировалось Siropchik, 07.02.2012 в 16:08. |
#8
|
||||
|
||||
ну так ты же сам сбрасываешь статус перед посылкой команды, а в событии устанавливаешь. вот цикл после отправки команды и будет крутить пока статус не установиться в событии.
Пишу программы за еду. __________________ |
#9
|
|||
|
|||
Для проверки сделал вот такой цикл, он не зависает
PHP код:
|
#10
|
||||
|
||||
так сделай:
Код:
while not Status_response do Application.ProcessMessages; Пишу программы за еду. __________________ |
#11
|
|||
|
|||
Большое спасибо помогло!!!
Последний раз редактировалось Siropchik, 08.02.2012 в 14:43. |