AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke WinSock Error Anwendungsweit abfangen
Thema durchsuchen
Ansicht
Themen-Optionen

WinSock Error Anwendungsweit abfangen

Ein Thema von mohikaner · begonnen am 7. Sep 2006 · letzter Beitrag vom 7. Sep 2006
Antwort Antwort
mohikaner

Registriert seit: 7. Sep 2006
Ort: Saarbrücken
5 Beiträge
 
Delphi 5 Standard
 
#1

WinSock Error Anwendungsweit abfangen

  Alt 7. Sep 2006, 08:39
Hallo zusammmen,

ich bin neu hier und habe gerade ein dringendes Problem.
Ich habe mit der Komponente ClientSocket einseitig eine Verbindung aufgebaut (ich meine damit die Gegenstelle existiert zur Zeit nicht) und nach der Aktivierung kommt nach kurzer Zeit eine Exception "ESocketError". Wie kann ich diese Exception abfangen? Der folgende Code klappt nicht:

Code:
  try
    CS1.Active := True;
  except
    on ESocketError do CS1.Active := False;
  end;
Da die Exception scheinbar nicht direkt sondern verzögert aufgerufen wird, und dann hat der Programmablauf die try-except-schleife wohl schon verlassen.

Ich meine, ich hätte früher mal ein Konstrukt gesehen, das Exceptions Anwendungsweit abfängt, bin mir aber nicht sicher und kann den alten Code auch nicht mehr finden.

Hat jemand auf Anhieb eine Idee?

Dank schon mal vorab.
Jörg
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: WinSock Error Anwendungsweit abfangen

  Alt 7. Sep 2006, 09:31
Bekommst Du die Exception nur wenn Du deine Applikation in der IDE startest
oder auch wenn Du sie ohne IDE startest.

Die IDE zeigt Dir auch die Exceptions an wenn ein try.. except Block vorhanden ist.
Diese Verhalten kann man aber abstellen, irgendwo bei den Compilereinstellungen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
mohikaner

Registriert seit: 7. Sep 2006
Ort: Saarbrücken
5 Beiträge
 
Delphi 5 Standard
 
#3

Re: WinSock Error Anwendungsweit abfangen

  Alt 7. Sep 2006, 09:38
Ja, der Fehler kommt auch wenn ich die exe-Datei alleine (ohne IDE) starte. Er lautet: "Asyncroner Socket-Fehler 10061" Er tritt nur auf, wenn der entsprechende Gegenpart (WinSocket - Server) nicht erreichbar ist.

Ich habe inzwischen herausgefunden, dass er von dem TClientSocket - Ereignis "onError" erkannt wird. Das kann ich auch den Error-Code auslesen, allerdings kann ich die Fehlermeldung damit noch nicht unterdrücken.

CS1 := TClientSocket1

Delphi-Quellcode:
procedure TForm1.CS1Error(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
  CS1.Active := False;
  Memo3.Lines.Add('Error...'+inttostr(ErrorCode));
end;
Ich möchte halt ein Verhalten ereichen, das die Client-Komponente immer wieder den Verbindungsaufbau versucht, ohne dass der Anwender ständig die Fehlermeldung wegklicken muss.

Regelmäßiges probieren "CS1.Active := True" klappt ja schon, allerdings kommt dann halt jedes mal wenn es nicht erfolgreich ist die Fehlermeldung und die muss weggeklickt werdn
Jörg
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: WinSock Error Anwendungsweit abfangen

  Alt 7. Sep 2006, 09:43
Aus der Hilfe:

Zitat:
Unit

ScktComp

type

TErrorEvent = (eeGeneral, eeSend, eeReceive, eeConnect, eeDisconnect, eeAccept);

TSocketErrorEvent = procedure (Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer) of object;

Description

The Sender parameter is the socket component that encountered the error.

The Socket parameter is the TCustomWinSocket object that receives the error notification.

The ErrorCode parameter is the error code returned by the Windows socket API call. Changing this to 0 within an error handler prevents an exception from being raised.
The ErrorEvent parameter indicates what Socket was attempting to do when the error occurred. It is of type TErrorEvent, which can have any of the following values:
Vielleicht hilft es.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
mohikaner

Registriert seit: 7. Sep 2006
Ort: Saarbrücken
5 Beiträge
 
Delphi 5 Standard
 
#5

Re: WinSock Error Anwendungsweit abfangen

  Alt 7. Sep 2006, 10:10
Hey prima,

... manchmal kann die Welt so einfach sein, ErrorCode auf 0 setzen und schon ist die Welt in Ordnung.

@Klaus01: Kurze Frage noch, woher hast Du die Hilfe, in der Delphihilfe zu Delphi 5.0 konnte ich nichts (aber wirklich gar nichts) über die WinSock - Komponenten finden.

Trotzdem auf jeden Fall schon mal vielen Dank, das hat mir sehr geholfen. (Und einem Solidaritätslauf bei dem alle Helfer ehrenamtlich arbeiten zu einer zuverlässigeren Zeitmessung verholfen. - wen's interessiert: www.solilauf.de)
Jörg
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: WinSock Error Anwendungsweit abfangen

  Alt 7. Sep 2006, 10:13
ich hatte nach TErrorEvent gesucht und nicht speziell nach WinSock

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
mohikaner

Registriert seit: 7. Sep 2006
Ort: Saarbrücken
5 Beiträge
 
Delphi 5 Standard
 
#7

Re: WinSock Error Anwendungsweit abfangen

  Alt 7. Sep 2006, 10:28
Tatsächlich,

hab's auch gefunden. manchmal ist der Trick zu wissen nach was man suchen muss.
Vielen Dank noch mal.
Jörg
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: WinSock Error Anwendungsweit abfangen

  Alt 7. Sep 2006, 10:59
Wie wäre es denn einfach nach TClientSocket zu suchen und dort dann oben auf "Methoden" bzw. "Eigenschaften" zu gehen und sich dort zu den gesuchten Dingen weiter durch zu klicken?
  Mit Zitat antworten Zitat
mohikaner

Registriert seit: 7. Sep 2006
Ort: Saarbrücken
5 Beiträge
 
Delphi 5 Standard
 
#9

Re: WinSock Error Anwendungsweit abfangen

  Alt 7. Sep 2006, 15:30
Das wäre mein erster Schritt gewesen, aber wie ich schon geschrieben hatte war bei mir in der Delphi-Hilfe der Begriff TClientSocket weder mit F1 noch über die Suchfunktion der Hilfe zu finden.

Vielleicht liegts an der Version (Delphi 5 Standard) oder bei mir ist die Hilfe vielleicht nicht richtig installiert - keine Ahnung.

Aber Problem ist ja gelöst.
Jörg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 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