Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.24;
Скачать: CL | DM;

Вниз

Пинг, TIdIcmpClient, except.   Найти похожие ветки 

 
vegarulez ©   (2007-05-27 07:00) [0]

Доброго времени суток мастерам!
У меня такая проблемка, подскажите как её можно решить.
У меня есть приложение, в котором допустим пингуется ya.ru каждые 30 секунд, для проверки, есть инет или нет, для этого использую TIdIcmpClient. И всё бы ничего но столкнулся с такой проблемкой, когда вообще нет соединения с инетом (т.е. нет сети, или отрублен модем), то выходит except сокет еррор, так вот чтобы избавится от этой месаги, вставил блок except. Но проблема в том что, когда вообще нет соединения, то при пинге, приложение виснет на 1-2 секунды, и потом только переходит на except.

Вопрос, как избавится от завсиания?
ИМХО: Сделать эту обработку в отдельном потоке? Ну чтобы приложение не висло...
Подскажите как это сделать... (не работал с потоками)

И сам except - криво сделан, подскажите как правильнее...

// тут пока без таймера- на кнопку забиндил, для отладки

procedure TfrmPing.btnPingClick(Sender: TObject);
var
 i: integer;
begin
 ping_en:=0;
 ping_dis:=0;
 ICMP.OnReply := ICMPReply;
 ICMP.ReceiveTimeout := 1000;
 btnPing.Enabled := False;
 try
 ICMP.Host := edtHost.Text;
 While i <> 5 do
begin
 try
    Begin
    ICMP.Ping;
    Application.ProcessMessages;
    End;
  except on E:Exception do
  i:=4;
 end;
i:=i+1;
end;
finally btnPing.Enabled := True;
end;
end;


 
vegarulez ©   (2007-05-27 07:10) [1]

// сверху немного неправильный код...

procedure TfrmPing.btnPingClick(Sender: TObject);
var
 i: integer;
begin
 i:=0;
 ping_en:=0;
 ping_dis:=0;
 ICMP.OnReply := ICMPReply;
 ICMP.ReceiveTimeout := 1000;
 btnPing.Enabled := False;
 try
 ICMP.Host := edtHost.Text;
 While i < 4 do
begin
 try
    Begin
    ICMP.Ping;
    Application.ProcessMessages;
    End;
  except on E:Exception do
  i:=4;
 end;
i:=i+1;
end;
finally btnPing.Enabled := True;
end;
end;


 
Anatoly Podgoretsky ©   (2007-05-27 10:17) [2]

> vegarulez  (27.05.2007 07:10:01)  [1]

while не нужен, лучше for, а except лучше так except exit end;


 
vegarulez ©   (2007-05-29 21:16) [3]

Анатолий, я ещё пару вопросов про Инди хотел у вас спросить, как у "крестного отца" индейцев...  )
У вас есть е мыл или ася?..
мой емыл vegarulez[СОБАКА]ngs.ru...
напишите ваши контакты, как с вами можно связаться...
Жду письма ;)


 
Anatoly Podgoretsky ©   (2007-05-29 21:20) [4]

> vegarulez  (29.05.2007 21:16:03)  [3]

Все есть и все не доступно.
А индейцем я смог пробыть только 7 дней,
лучший индеец - мертвый индеец.


 
vegarulez ©   (2007-05-29 21:40) [5]

:(
но всё же...
хочется поговорить с Гуру...



Страницы: 1 вся ветка

Текущий архив: 2007.06.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
8-1161003706
zorik
2006-10-16 17:01
2007.06.24
каким способом можно быстро узнать разрешение файлов jpg и bmp?


4-1168807319
gibz
2007-01-14 23:41
2007.06.24
связать тип данных и указатель возвращаемый функцией


15-1180294087
лол
2007-05-27 23:28
2007.06.24
есть аналог stat.yandex.ru у других поисковиков?


3-1174471411
jiny
2007-03-21 13:03
2007.06.24
Как создать таблицы в Advantage Local Server


15-1180005032
No_Dead
2007-05-24 15:10
2007.06.24
Какое соотношение будет в следующей задачке