![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Не судите строго я в программировании новичок самоучка.
Проблема вот такая Через телнет соедняюсь с ххх приложением и шлю ему запросы. Если получать ответ на запросы в обработчике событий 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. |