Autor |
Beitrag |
derkreis
Hält's aus hier
Beiträge: 8
|
Verfasst: Fr 24.02.12 13:18
Hallo,
ich verwende Indy10 TIdSNTP zum Syncron halten eines Rechners mit einem NTP-Server. Das funktioniert auch recht gut.
Leider bringt Indy immer eine Message Box Socket error irgendwas, wenn die Netzwerkverbindung im Betrieb weg bricht.
Auch mit try ... except läßt sich diese Meldung nicht unterdrücken.
Gibt es einen Weg Indy zum schweigen zu bringen?
Gruß
Ralf Moderiert von Narses: Topic aus Windows API verschoben am Fr 24.02.2012 um 12:27
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 24.02.12 13:28
Moin und  in der EE!
derkreis hat folgendes geschrieben : | Auch mit try ... except läßt sich diese Meldung nicht unterdrücken. |
Doch, das tut es, allerdings nicht (standardmäßig) in der IDE. Wenn du das Programm ohne IDE startest und einen (korrekten!) try-except-Block verwendest, dann wird keine Meldung erzeugt.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 24.02.12 14:48
Es sei denn die Exception ist keine echte Exception. Dann muss man das anpassen: Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| on E: Exception do ... on E: TObject do ... | Das ist aber fast nie der Fall und ich schätze mal hier war auch wieder das Starten aus der IDE schuld. 
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 24.02.12 14:53
Moin!
jaenicke hat folgendes geschrieben : | Es sei denn die Exception ist keine echte Exception. Dann muss man das anpassen: |
Wenn ich die gesamte Ausnahmeverarbeitung abklemmen will, dann lasse ich doch einfach die on-Klausel weg, oder?  Aber grundsätzlich hast du schon recht.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 24.02.12 16:01
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 24.02.12 16:19
Moin!
jaenicke hat folgendes geschrieben : | Narses hat folgendes geschrieben : | Wenn ich die gesamte Ausnahmeverarbeitung abklemmen will, dann lasse ich doch einfach die on-Klausel weg, oder? | Dann fehlt mir aber die Exception. |
Dem ist nicht so, es gibt ja noch ExceptObject!
jaenicke hat folgendes geschrieben : | Wenn ich mit TObject arbeite, kann ich immer noch schauen was das ist und casten. |
Sobald du eine on-Klausel hast, hast du auch unvermeidbar das "WhiteListe-Problem" und es kann dir immer was durchrutschen. Die einzige wirklich sichere Variante, um immer alle Ausnahmen abzufangen, ist keine on-Klausel nehmen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
derkreis 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 27.02.12 09:43
Hallo,
erst mal danke für die Meldungen.
ich hab den Fehler nicht in der IDE (Testen ist nicht so gut möglich) In einer VW kann ich virtuell leichter den Netzwerkstecker ziehen ohne unangenehme Randeffekte.
ich mach das so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| try AktuelleZeit := Form1.IdSNTP1.DateTime; except Form1.sllServerZeit.Hint := 'Verbindungsproblem mit dem Zeitserver: ' + ZeitServer; end; Result := AktuelleZeit; | Die Meldung "Socket Error # 10065 No route to host" erscheint jedoch immer noch, wenn das "Netzwerkkabel" abgeklemmt wird.
Gruß
Ralf
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 27.02.12 10:26
Was hast du für eine Delphiversion? Bei aktuellen passiert das definitiv nicht.
Bist du ganz sicher, dass die Meldung an der Stelle passiert? Vielleicht baust du zur Sicherheit vorher und nachher ein ShowMessage ein um zu prüfen, falls du nicht 100% sicher bist...
|
|
derkreis 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 27.02.12 11:29
Hallo,
Es ist Delphi 2010. Mit Showmessage hatte ich auch Exception-Probleme. Hab mich aber durch caption-Texte an die Stelle herangetastet.
Asche auf mein Haupt:
Delphi-Quelltext 1:
| if ( MilliSecondsBetween( Now(), Form1.IdSNTP1.DateTime) > ( MaxRange * 1000)) then begin | Da kam es zur Meldung. Ich hatte das glatt überlesen
Sorry nochmal
Ralf
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|