Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IdTelnet и получение ответов [D7, Win2k, WinXP]


fishka ©   (2006-12-20 11:27:00) 

Использую компонет IdTelnet. В цикле посылаю команду (например, dir). Думаю, что после каждой команды должен быть ответ, т.е. должно происходить событие IdTelnet1DataAvailable(Sender: TIdTelnet; const Buffer: String); В данном событии данные буфера записываются в текстовый файл с именем, определяемым в цикле.
Но почему-то файл получается только после последненго прохода цикла.
Вопрос: почему не происходит событие IdTelnet1DataAvailable после посылки команды IdTelnet1.SendCh? И как сделать, чтобы после выполнения IdTelnet1.SendCh(CR) можно было получить данные, посланные сервером Telnet?


Сергей М.   (2006-12-20 11:57:00) [1]

Понятно.

И зачем тут цикл по символам ком.строки ?
Посылай всю команду одним вызовом метода:

varr:='dir'#13;

IdTelnet1.SendStr(varr);

и тут же жди ответ сервера на команду:

IdTelnet1.ReadXXXX(...);

А еще лучше использовать метод SendCmd - он сочетает в себе и отправку команды и ожидание/получение рез-та ее выполнения.

Тогда и событие не нужно будет.


fishka   (2006-12-20 11:47:00) [2]

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select distinct DNID, id_LES_region from DNID' );
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
var_dnid:='dnid '+ADOQuery1.FieldByname('DNID').AsString+' '+ADOQuery1.FieldByname('id_LES_region').AsString;
varr:='dir';
for i:=1 to length(varr) do
  begin
   IdTelnet1.SendCh(varr[i]);
  end;
   IdTelnet1.SendCh(CR);
 ADOQuery1.Next;
end;
ADOQuery1.Close;


Сергей М.   (2006-12-20 11:43:00) [3]

Что за цикл ? Показывай ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо