![]() |
Indy 9: EIdNotConnected, EIdDisconnected -> stören!
Hi,
Indy wirft ja gerne mal die EIdNotConnected oder EIdDisconnected Exceptions, auch wenn alles in Ordnung ist. Leider springt ja der Debugger drauf an. In den Kommentaren von Indy steht:
Delphi-Quellcode:
Leider bringt das oben nur bei EIdConnClosedGracefully was. Jetzt ist die Frage, kann ich irgendwas machen, dass die erstgenannten Exceptions erst gar nicht auftreten (EIdNotconnected und EIdDisconnected) oder muss ich die zu der Liste der ignorierten Debuggerexceptions hinzufügen, dass ich die Dinger nicht mehr sehe? Es ist sowas von nervig, wenn man beim Beenden der Anwendung immer die Meldung des Debuggers bekommt.
// You can add EIdSilentException to the list of ignored exceptions to reduce debugger "trapping"
// of "normal" exceptions EIdSilentException = class(EIdException);
Delphi-Quellcode:
Auch wenn man erst FClient.Free aufruft, sobald das Event OnDisconnected aufgerufen wurde, erhält man eine Exception "EIdNotConnected".
destructor TIRCChat.Destroy;
begin if FClient.Connected then FClient.Disconnect(true); FClient.Free; // Irgendwann hier drin passiert es. inherited Destroy; end; Ich hab hier im Forum schon ein bisschen gesucht und auf Vergewaltigung von Sprachfeatures und "Verkrüppelung" des Designs gestoßen und ansonsten nur, dass es quasi nur über die Ignorierlist geht. Würde aber gerne die Krankheit abschaffen und nicht das Symptom ausblenden. Hat jemand noch eine Idee? [edit=Matze]Titel auf Wunsch des Autors geändert. MfG, Matze[/edit] |
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
So, da hier gerade "Push! Push" von Falco über mein Headset düddelt, mach ich doch mal, wie mir geheißen. ;-)
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
:angel2:
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Ist das die neuste Indy Version?
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Ich hätte schwören können, dass ich oben Indy 9 geschrieben hab :gruebel:
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Ja die neuste von der 9er mein ich ja -gg-
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Die, die bei TDE standardmäßig dabei ist. Dürfte die 9.0.50 sein.
Ach, im Titel hab ich ja Indy 9 stehen :mrgreen: |
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Also an dieser Stelle finde ich die Exception berechtigt. Du beendest die Verbindung aber wartest nicht bis es abgearbeitet wird oder läuft das bei den Indies syncron?
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Hi,
ich bin mir nicht sicher, aber ich denke, dass sie synchron arbeiten. Das Problem ist, dass die Meldung direkt in dem Disconnect(true) auftreten. |
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
:angle2:
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Hi Muhkuh,
1) Indy 9 ist veraltet. 2) Was ist FClient für ein Objekttyp? 3) Änder bitte den Titel in etwas Rücksichtsvolleres als xyz "... nerven", z.B. "stören". Sonst bin ich genervt. Zusätzlich: Zitat:
Diese Exceptions kommen nur, wenn versucht wird, auf eine Verbindung zuzugreifen, die nicht (mehr) besteht. [offtopic] Beispiel: Wenn Du im Debugger arbeitest und die Connection-Timeouts dadurch ausgelöst werden, daß man ewig im Codefenster mitliest. Bei manchem Code (nicht Indy) reichen dafür ja teilweise ewig lange Millisekunden *g*. Das wär so, als wolltest Du eine Geschwindkeitsmessung mit einem Auto machen, hälst aber jedesmal zum Messen an. Sowas mögen dann sowohl die Indys als auch die Gegenstellen (FTP/IRC/E-Mail/etc-Server) auch nicht immer. [/offtopic] Kurzum: Diese Exceptions kann man in Delphi, zumindest in aktuelleren Versionen, einfach ignorieren (Tools -> Optionen -> Debugger-Optionen -> Borland-Debugger -> Sprach-Exceptions). Dort kann man sie dann auch wieder einschalten. Du könntest jetzt Deinen Destruktor schützen, damit es auf jeden Fall geht:
Delphi-Quellcode:
So, wenn Dein Debugger dann immernoch nervt halt die Exception auf die o.g. Ausnahme setzen. Zur Runtime kommt die dann bestimmt nicht mehr und das zählt.
destructor TIRCChat.Destroy;
begin try try if FClient.Connected then FClient.Disconnect(true); FClient.Free; except On E:EIdNotConnected do begin // schlucken der Exception end; On E:EIdDisconnected do begin // schlucken der Exception end; On E:Exception do begin Raise; // alles andere Re-Raisen end; end; finally inherited Destroy; end; end; Gruß Assertor P.S.: Ist ja lustig, hab das fertig und sehr gerade erst Deine PN. ;) |
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Hi Muhkuh,
ok. Ich würde Dir zunächst einmal wirklich empfehlen, auf Indy 10 umzusteigen. Beim kostenlosen Turbo Delphi Explorer kannst Du zwar keine neuen Komponenten registrieren, aber dafür bei der Installation imho doch auswählen, ob Du Indy 9 oder Indy 10 haben willst. Probier das bitte. Deine Überlegung zu .Connected ist natürlich soweit richtig. Gruß Assertor |
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Hi,
das mit dem Komponenten registrieren ist klar, aber lief im Endeffekt nur auf ein anpassen der Suchpfade hinaus. Da bei TDE irgendwas mit 10.1 dabei war, hab ich gleich die 10.2.3 genommen. Direkt testen kann ich leider nicht, da die IdIRC-Komponente total anders gefrickelt ist, als die bei Indy 9. Ich bastel einfach mal ein Testprojekt und schaue, ob der Fehler weiterhin bleibt. |
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Hi,
ok, danke. Das ist der beste Weg, denn Support/Hilfe für das alte Indy 9 zu geben wird immer schwieriger. Wenn es dann immer noch nicht geht, poste die genaue Fehlermeldung (so wie Du es oben gemacht hast) hier, vielleicht zusammen mit dem Testprojekt. Gruß Assertor :dp: |
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Hi,
also entweder bin ich einfach zu doof dafür oder es ist doch nicht so einfach, wie gedacht. Zitat:
Delphi-Quellcode:
Die Ausgabe von OnRaw ist:
unit Unit3;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdIRC, StdCtrls, ExtCtrls, ComCtrls, IdContext; type TForm3 = class(TForm) Button1: TButton; Label1: TLabel; Button2: TButton; Timer1: TTimer; RichEdit1: TRichEdit; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Button2Click(Sender: TObject); procedure OnRaw(ASender: TIdContext; AIn: Boolean; const AMessage: String); private { Private-Deklarationen } FIRC: TIdIRC; public { Public-Deklarationen } end; var Form3: TForm3; const IRC_CHANNEL = '#nonamegame'; implementation {$R *.dfm} procedure TForm3.Button1Click(Sender: TObject); begin FIRC.Host := 'irc.quakenet.org'; FIRC.Port := 6667; FIRC.Nickname := 'DerDieMuhkuh'; FIRC.Connect; end; procedure TForm3.Button2Click(Sender: TObject); begin FIRC.Join(IRC_CHANNEL); end; procedure TForm3.FormCreate(Sender: TObject); begin FIRC := TIdIRC.Create(nil); FIRC.OnRaw := OnRaw; end; procedure TForm3.FormDestroy(Sender: TObject); begin if (FIRC.Connected) then begin FIRC.Disconnect(); end; FIRC.Free; end; procedure TForm3.OnRaw(ASender: TIdContext; AIn: Boolean; const AMessage: String); begin RichEdit1.Lines.Add(AMessage); end; procedure TForm3.Timer1Timer(Sender: TObject); begin if (FIRC.Connected) then Label1.Caption := 'Online' else Label1.Caption := 'Offline'; end; end. Zitat:
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Zitat:
Zitat:
Edit: Sieh mal ![]() Gruß Assertor |
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Hi,
sorry, das ist mein Fehler. Ich hatte das mit Username schon drin und nur eben ein anderes "OnRaw" gepostet. Das Problem mit dem Disconnecten behebt das jedoch nicht. Eben hatte ich auch Zitat:
Zitat:
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Poste mal bitte das Projekt als ZIP hier. Dann kann ich mir das ansehen, das wird aber ein klein wenig dauern - muß selbst programmieren...
Gruß Assertor |
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
hier ist das Projekt. Einfach starten, auf Button1 klicken, bisschen warten und dann das Projekt beenden. Zitat:
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Hi,
ok, jetzt aber ganz schnell doch schon die Antwort: Es geht - das liegt also an Deinem Rechner bzw. Deiner Firewall / Router. Achte einfach drauf, daß Du auf den Ports auch raus- UND reinkommst. Siehst, manchmal hilft Brainstorming... Gruß Assertor Mein Output bei Button1: Zitat:
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Vergiss meinen Post, connecten geht ja auch bei Dir, oder?
|
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Hi,
ja, es geht nur ums Beenden, dass da die besagten Exceptions auftauchen. Das Verbinden etc. pp. funktioniert. ;) [edit] Mein Listing:
Code:
[/edit]
RichEdit1
NICK DerDieMuhkuh USER DerdieMuhkuh 0 * : NOTICE AUTH :*** Looking up your hostname NOTICE AUTH :*** Checking Ident NOTICE AUTH :*** Found your hostname PING :2947844751 PONG 2947844751 NOTICE AUTH :*** No ident response 001 DerDieMuhkuh :Welcome to the QuakeNet IRC Network, DerDieMuhkuh 002 DerDieMuhkuh :Your host is mediatraffic2.fi.quakenet.org, running version u2.10.12.10+snircd(1.3.4a) 003 DerDieMuhkuh :This server was created Wed Apr 9 2008 at 11:38:57 UTC 004 DerDieMuhkuh mediatraffic2.fi.quakenet.org u2.10.12.10+snircd(1.3.4a) dioswkgxRXInP biklmnopstvrDcCNuMT bklov 005 DerDieMuhkuh WHOX WALLCHOPS WALLVOICES USERIP CPRIVMSG CNOTICE SILENCE=15 MODES=6 MAXCHANNELS=20 MAXBANS=45 NICKLEN=15 :are supported by this server 005 DerDieMuhkuh MAXNICKLEN=15 TOPICLEN=250 AWAYLEN=160 KICKLEN=250 CHANNELLEN=200 MAXCHANNELLEN=200 CHANTYPES=#& PREFIX=(ov)@+ STATUSMSG=@+ CHANMODES=b,k,l,imnpstrDducCNMT CASEMAPPING=rfc1459 NETWORK=QuakeNet :are supported by this server 251 DerDieMuhkuh :There are 25 users and 114948 invisible on 43 servers 252 DerDieMuhkuh 84 :operator(s) online 253 DerDieMuhkuh 14 :unknown connection(s) 254 DerDieMuhkuh 97858 :channels formed 255 DerDieMuhkuh :I have 9558 clients and 1 servers NOTICE DerDieMuhkuh :Highest connection count: 11082 (11081 clients) 375 DerDieMuhkuh :- mediatraffic2.fi.quakenet.org Message of the Day - 372 DerDieMuhkuh :- 2008-4-9 12:19 372 DerDieMuhkuh :- **[ mediatraffic.fi.quakenet.org ]******************************** 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- Welcome to the QuakeNet IRC Network! 372 DerDieMuhkuh :- home :: [url]http://www.quakenet.org/[/url] 372 DerDieMuhkuh :- rules :: [url]http://www.quakenet.org/rules/[/url] 372 DerDieMuhkuh :- servers :: [url]http://staff.quakenet.org/servers.phtml[/url] 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- You are connected to mediatraffic.fi.quakenet.org. 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- admin :: jmh[at]quakenet.org 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- hosted :: Palvelimen tarjoaa Mediatraffic Oy 372 DerDieMuhkuh :- [url]http://www.mediatraffic.fi/[/url] 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- standard irc ports: 6660-6669, 7000 and 8080 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- **[ Local IRC operators are ]************************************* 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- jmh <jmh[at]quakenet.org> 372 DerDieMuhkuh :- shadow <shadow[at]quakenet.org> 372 DerDieMuhkuh :- strutsi <strutsi[at]quakenet.org> 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- **[ Disclaimer ]************************************************** 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- IRC is a free media, the operators of this network take no 372 DerDieMuhkuh :- responsibility whatsoever for opinions expressed or actions 372 DerDieMuhkuh :- taken by users. 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- By connecting to this server you give us the right to 372 DerDieMuhkuh :- probe your machine for open proxies/wingates. 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- **[ Rules ]******************************************************* 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- [url]http://www.quakenet.org/rules[/url] 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- This network may NOT be used for: 372 DerDieMuhkuh :- * Flooding (including flood/clonebots). 372 DerDieMuhkuh :- * Distribution of copyrighted material (eg, warez, mp3, 372 DerDieMuhkuh :- movies) or pornography. 372 DerDieMuhkuh :- * Channels dedicated to cheats designed to cause unfair 372 DerDieMuhkuh :- advantage in multiplayer games. 372 DerDieMuhkuh :- * Clones. Please contact [email]info@quakenet.org[/email] if you require 372 DerDieMuhkuh :- more than five clients (LAN parties, bots, etc). 372 DerDieMuhkuh :- * Attempts to takeover existing channels or network services. 372 DerDieMuhkuh :- * Racism and/or Nazism. 372 DerDieMuhkuh :- * Spamming and/or advertising. 372 DerDieMuhkuh :- * Hacking (including Virus/Trojan distribution). 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- Continued use of this server indicates acceptance of these 372 DerDieMuhkuh :- conditions. 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- **[ Information & Help ]****************************************** 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- QuakeNet IRC Network - [url]http://www.quakenet.org/[/url] 372 DerDieMuhkuh :- General Help - [url]http://help.quakenet.org/[/url] 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- For network related questions, join #feds. 372 DerDieMuhkuh :- For other questions, join #help. 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- If you want to apply for our service bot Q, visit the guide 372 DerDieMuhkuh :- at [url]http://www.quakenet.org/guide/[/url] 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- Neither the QuakeNet IRC operators in #feds, nor the people 372 DerDieMuhkuh :- in #help get paid for their work. Therefore, be patient 372 DerDieMuhkuh :- when asking a question. 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- We hope you enjoy chatting on QuakeNet, have a nice stay! 372 DerDieMuhkuh :- 372 DerDieMuhkuh :- **[ End Of MOTD ]************************************************* 376 DerDieMuhkuh :End of /MOTD command. NOTICE DerDieMuhkuh :on 1 ca 1(4) ft 20(20) 221 DerDieMuhkuh +i |
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Hi Muhkuh,
Es ist kein echter Fehler! Für das TCP läuft dort einfach ein Listenerthread, der auch im Moment des Beendens versucht, Daten zu lesen. Das geht nicht mehr, da der Socket ja gerade geschlossen/gelöscht werden soll. Kein Grund zur Sorge also. Es wird kein Leck o.ä. erzeugt. Der "Fehler" tritt nur beim Beenden auf und nur innerhalb des Debuggers. Klicke einfach auf "Diesen Exception-Typ ignorieren" und Du siehst Ihn in Zukunft nicht mehr. Grundsätzlich ist es "as designed" ;) Gruß Assertor |
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Hi,
"schade" zu hören, aber mit der Erklärung logisch. Danke für die Hilfe. Dann kann ich auch wieder auf Indy9 umsteigen und spare mir das Umprogrammieren von 9 auf 10 ;) |
Re: Indy 9: EIdNotConnected, EIdDisconnected -> nerven!
Zitat:
Gruß Assertor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz