Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];

Вниз

Пинг, 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;
Скачать: [xml.tar.bz2];

Наверх





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


15-1180009802
Сатир
2007-05-24 16:30
2007.06.24
Удаление залоченного системой файла


2-1180700653
ANB
2007-06-01 16:24
2007.06.24
Изменение CommandText у ClientDataSet


1-1177574403
intNaked
2007-04-26 12:00
2007.06.24
Компоненты: индикатор отклонения


2-1180932674
vegarulez
2007-06-04 08:51
2007.06.24
Вопрос про Delay





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский