![]() |
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:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:25 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