![]() |
Beim Connecten Fehler abfangen
Hi! Bin LAN-Programmierungsneuling.
Ich habe ein Problem mit LAN in Delphi. Ich hab mir das Tutorial auf ![]() Jetzt wollte ich ein Chat-Programm zum üben programmieren. Mein Problem ist: Wie erkenne ich ob es den Anderen Computer überhaupt gibt? (Wenn es ihn nicht gibt kommt ein Socket-Fehler(11001 - Host unbekannt) Den Fehler ich wollte beim Ereignis ClientSocket.OnError abfangen, da kommt aber nichts an! (Manchmal schon, aber eben nicht immer!!!) Wenn sich das Problem mit den Standartmitteln nicht bekämpfen lässt, geht das dann bei Indy besser? Wenn ja wie verbinde ich mit Indy. :?: Wie gesagt bin LAN-Programmierungsneuling und hier im Forum hab ich immer nur Fragen und Antworten von "Experten" gefunden. :-) :wiejetzt: P.S. Liegt nicht an Firewall. |
Re: Beim Connecten Fehler abfangen
Probiers mal mit try... except... end.
Delphi-Quellcode:
var
Socket: TClientSocket; begin try //Initialisierung des Objekts Socket := TClientSocket.Create(Form1); //Zuweisen eines Portes zB 10024 Socket.Port := 10024; //Folgende Zeile bräuchte ein TClientSocket noch: Socket.Host := '127.0.0.1'; //In den Listening-Status gehen bzw connecten Socket.Open; except //hier Fehlerbehandlung einfügen end; end; |
Re: Beim Connecten Fehler abfangen
Hi,
implementier das ganze mal über die vorhandenen Kompos in deinem D5. Hast Du sonst deine Provedure auch dem Ereignis zugewiesen? Gruß oki |
Re: Beim Connecten Fehler abfangen
Offenbar, sonst würden die Fehler nicht manchmal kommen, und manchmal eben auch nicht.
Wunder dich nicht, wenn dein Delphi dir trotz dem try...except-Block einen Fehler anzeigt, wenn du die Exe alleine startest, wird der Fehler nicht mehr in einer unschönen MSG-Box angezeigt |
Re: Beim Connecten Fehler abfangen
Danke für die Antworten!
try/except hilft da leider nichts(getestet); Zitat:
//edit: klappt immer noch nicht. Was ist eigentlich bei der Indy-Kompo, darf man da Server und Client nicht auf der selben Form haben? Hab ein paar Quelltexte von anderen runtergeladen und da gehts, nur bei mir nicht! |
Re: Beim Connecten Fehler abfangen
Meine Kristallkugel ist grad im Urlaub, wärst du also so nett ein bisschen Quelltext zu zeigen?^^
Und: Ja, die dürfen auf der gleichen Form liegen. |
Re: Beim Connecten Fehler abfangen
Sorry
Delphi-Quellcode:
und
procedure TFormConnect.BitBtn1Click(Sender: TObject);
var Rec:MessageRec; begin If Edit1.Text = '' then begin ShowMessage('Bitte IP eingeben!'); exit; end; //try Form1.Client.Host := Edit1.Text; Form1.Client.Port := Port; Form1.Client.Active:=true; // oder auch .open {except ShowMessage('Fehler aufgetreten!'); end;} randomize; Rec.Typ:=MR_Connect; Rec.Name:=Name; Rec.Nickname:=Nickname; Code:=Random(100); //Für Verschlüsselung //Form1.Client.Socket.SendBuf(Rec,SizeOf(rec)); //-> wollte ertmal den Testen das es connected State:=Connect; {Form1.WaitForConnect.Tag :=0; Form1.WaitForConnect.Enabled :=true;} Form1.Status.SimpleText:= 'Verbindungsaufbau...'; end;
Delphi-Quellcode:
Wegen try except:
procedure TForm1.ClientError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin Memo1.Lines.Add('Fehler '+IntToStr(ErrorCode)); ErrorCode := 0; // keine Exception erzeugen, Fehler behandelt end; Wenn ich das in einen Try except Block mache ist das so: Es ruft Client.Open auf und macht dann gleich weiter. Und erst später wird der Fehler ausgelöst. (Ich nehme an nach LookUp) Kannst du mal testen ob das bei dir geht: Mach nen Server stell ihn auf einen Port ein und aktiviere ihn. Bei OnError beim Clienten irgent eine Meldung reinschreiben. Dann bei ButtonClick Client auf nichtvorhandene IP setzen und den Clienten aktivieren. Dann paar mal auf den Button Klicken. Bei mir kommt mal meine Meldung und mal die vorgefertigte. Kann sowas am Compiler liegen?:? Ich könnte ja auf Indy umsteigen aber das funktioniert auch nicht, da findets nie einen Server!!! Sowas hatte ich noch nie!!! :wall: P.S.auch bei Sources von anderen kommt mal meine und mal die vorgefertigte Meldung |
Re: Beim Connecten Fehler abfangen
Zitat:
Du hast als einzige Möglichkeit das OnError Ereignis und dort musst du ErrorCode auf 0 setzen. Dies machst du nun auch schon. Das du eine Exception angezeigt bekommst in der IDE kann ja gut und gerne sein, aber zur Laufzeit ohne IDE sollte diese nicht mehr erscheinen. |
Re: Beim Connecten Fehler abfangen
Das hab ich ja schon getestet.
Auch wenn ich nur die Exe, ohne Delphi starte kommt die Exception falsch. Da muss ich wohl mit leben. |
Re: Beim Connecten Fehler abfangen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 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