Главная страница
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.025 c
9-1154734440
Нуб
2006-08-05 03:34
2007.06.24
Как переконвертировать PNG в BMP ?


3-1175505786
NKT
2007-04-02 13:23
2007.06.24
Шифрование данных


15-1180334920
tesseract
2007-05-28 10:48
2007.06.24
Получи 5*10^3 уе от Sun


2-1180662728
Вовчка
2007-06-01 05:52
2007.06.24
системные меню


15-1180202581
easy
2007-05-26 22:03
2007.06.24
Роботы