Главная страница
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.023 c
1-1177338712
webpauk
2007-04-23 18:31
2007.06.24
Проблема с положением объектов в ScrollBoxe


2-1180532703
DmitrichJ
2007-05-30 17:45
2007.06.24
ADOConnection. Как указать только путь к БД?


4-1168809939
Scotty
2007-01-15 00:25
2007.06.24
Подмена logonui.exe


2-1180945525
GLXV
2007-06-04 12:25
2007.06.24
Поиск по ключевому полю (ADO)


9-1152798901
VolanD666
2006-07-13 17:55
2007.06.24
Правильно ли я делаю?