Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   IdcmpClient Meldung unterdrücken? (https://www.delphipraxis.net/174188-idcmpclient-meldung-unterdruecken.html)

gee21 8. Apr 2013 18:18

IdcmpClient Meldung unterdrücken?
 
Hi, ich bins schon wieder :-D

Ich versuche gerade ein paar IP Adressen an zu pingen.

Das klappt eigentlich auch schon. Wenn aber die IP Adresse nicht korrekt ist / nicht existiert, erhalte ich den Fehler: Socket Error Host not Found. (Ist ja auch logisch)

Aber wie kann ich das ignorieren, so dass er einfach mit dem nächsten Eintrag weiter macht?

So starte ich den Ping:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin

if listbox1.ItemIndex=-1 then begin
listbox1.ItemIndex:=0;
listbox2.ItemIndex:=0;
end;

   idi1.Host := listbox1.Items[listbox1.ItemIndex];
   idi1.Port:= strtoint(form1.ListBox2.Items[form1.ListBox2.ItemIndex]) ;
   idi1.Ping();

end;
und so wollte ich dann das Ergebnis auswerten. Aber es kommt ja eben gar nicht so weit.
Delphi-Quellcode:
procedure TForm1.IdI1Reply(ASender: TComponent;
  const AReplyStatus: TReplyStatus);
begin
if (AReplyStatus.MsRoundTripTime < 1000) then begin
   edit1.Text:=(AReplyStatus.FromIpAddress);
  edit2.Text:= form1.ListBox2.Items[form1.ListBox2.ItemIndex];
   edit1.Color:=clgreen;
   edit2.Color:=clgreen;
   button2.Enabled:=true;
   label2.Caption:='3';
   if checkbox2.Checked=true then begin
    checkbox2.Checked:=false;
    button2.Click;
   end;

end else begin
 edit1.Color:=clred;
   edit2.Color:=clred;
  listbox1.Items.Delete(0);
  listbox2.Items.Delete(0);
  button1.Click;
  button2.Enabled:=false;
    if checkbox3.checked then begin
   listbox1.Items.SaveToFile(ExtractFilePath(Application.Exename)+'\Server.txt');
listbox2.Items.SaveToFile(ExtractFilePath(Application.Exename)+'\Port.txt');
end;
  end;






Danke euch schon jetzt wieder mal :-D

nahpets 8. Apr 2013 18:27

AW: IdcmpClient Meldung unterdrücken?
 
Hallo,

mit der Methode "dreist alle Fehler ignorieren:"
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin

if listbox1.ItemIndex=-1 then begin
listbox1.ItemIndex:=0;
listbox2.ItemIndex:=0;
end;

   idi1.Host := listbox1.Items[listbox1.ItemIndex];
   idi1.Port:= strtoint(form1.ListBox2.Items[form1.ListBox2.ItemIndex]) ;
try
   idi1.Ping();
except
  on e : Exception do begin
     // hier eventuell die Fehler in eine Datei schreiben
     // oder in einem Memo sammeln oder hier einfach keinen
     // weiteren Quelltext einfügen.
     // Dann werden alle Fehler ignoriert.
     // Die Fehlermeldung steht in e.Message.
  end;
end;
end;

mjustin 8. Apr 2013 18:39

AW: IdcmpClient Meldung unterdrücken?
 
Kleiner Haken: wenn nacheinander einige Ping-Anfragen an verschiedene Zieladressen abgeschickt werden, und dann irgendwann eine Reihe von Ping-Antworten eintreffen, woran erkennt das Programm dann, welche Antwort zu welcher Anfrage gehört?

Einfache Lösung: nach jeder Anfrage erst auf die Antwort warten, oder bis ein (relativ hoch gewähltes) Timeout-Zeitfenster erreicht wird, bevor man den nächsten Server anpingt.

gee21 8. Apr 2013 19:18

AW: IdcmpClient Meldung unterdrücken?
 
Ah TipTop.

Vielen Dank

:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz