Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Как обработать исключения Indy


Автор: Ibragim 15.11.2006, 23:39
Вечер добрый.
Не бейте сильно если вопрос глупый. smile 
Подскажите плз, где ошибка.

Код

var
  connect_flag: boolean;
  lt: TIdTcpClient;
begin
  lt := TIdTcpClient.Create(nil);

  try
    lt.Host := 'xxx.xxx.xxx.xxx';    // Любой IP, вводим прямо сюда теста
    lt.Port := 80;
    lt.ReadTimeout := 3000;
    lt.Connect(TimeOut);
    lt.SendCmd('asdasde');         // Здесь специально ничего не значащая белиберда, будет ошибка
  except
    connect_flag := false;
  end;
  lt.Destroy;
<........>


На строчке lt.SendCmd('asdasde'); программа зависает, вне зависимости от значений TimeOut. То есть по следующему F8 ни на блок exception, ни на строку It.Destroy управление не передается. Чего посоветуете? Как "разморозить" или где ошибка.
PS AntiFreeze на формочке лежит.

Автор: Snowy 16.11.2006, 02:07
Цитата(Ibragim @  15.11.2006,  23:39 Найти цитируемый пост)
lt.SendCmd('asdasde');
Код

lt.Write('asdasde');
// или так:
lt.WriteLn('asdasde');

Автор: dumb 16.11.2006, 05:25
SendCmd следует использовать либо в связке с серверной компонентой, в которой прописаны CommandHandler'ы, либо когда есть уверенность в том, что удаленная сторона соответствующим образом ответит.

если ответа не будет, SendCmd будет 2147483647(MaxInt) раз пытаться прочитать его. тут никакой ReadTimeout не спасет... smile

Автор: Ibragim 16.11.2006, 12:44
Угу, заработало. Большой сэнкс.

А с TIdHttp такой же прикол есть?

Код ниже ведет себя точно так же... то бишь зависает.


Код

    MyIdHttp.ReadTimeout := 3000;
    MyIdHttp.Get('http://asdasde/asdssd.htm/')

Автор: Snowy 16.11.2006, 12:48
Нет. В http это не обойти.
Единственный вариант - запускать в потоке или бросить на форму TIdAntifrize

Автор: Ibragim 16.11.2006, 13:53
гуд. Понял. Сэнкс за ответы. Можно закрывать тему.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)