![]() |
Ereignisbehandlungsroutinen... Wie???
Irgendwie komm ich mit Ereignisbehandlungsroutinen net klar, was das is, weiß ich, wie ich sie schreib... ka :)
Teste grade ein wenig mit Sockets herrum, aber bekomm die Ereignisbehandlung net hi, oder besser habe ka wie das funzt... hab nu paar Ereignisse hier: OnConnect OnConnecting OnDisconnect OnError OnLookup OnRead OnWrite Das wär mein Socket: ClientSocket := TClientSocket.Create(nil); aber wie zum Henker bau ich nu Ereignisse dazu? Ich hoffe es ist wer willig mir das zu erklären, denn irgendwie finde ich nichts dazu... :( MFG keda |
Re: Ereignisbehandlungsroutinen... Wie???
Hi,
versuchs mal so:
Delphi-Quellcode:
"MeineOnConnectMethode" musst du natürlich vorher definieren.
// z.B.
ClientSocket.OnConnect := MeineOnConnectMethode; mfG mirage228 |
Re: Ereignisbehandlungsroutinen... Wie???
Das versteh ich nu gar net.... :shock:
Die Ereignisse sind doch eigene Prozeduren ??? Soll MeineOnConnectMethode dann meine Procedure sein? Wo muß ich das hinschreiben, was du da gerade geschrieben hast? Das Ereigniss OnClick von so einem TButton wär ja procedure TForm1.Button1(Sender: TObject); da müste doch das OnConnect Ereignis des ClientSocket auch ne Prozedure sein oder? Nur gibts da irgendwie Richlinien für, wie die dann heißen muß? Muß ich das wo hinschreiben? Kein Plan und in meinem Delphi Buch steht sowas net drinn... Da hab ich mit dem Dinge voll ins ... gegriffen... MFG Lucky |
Re: Ereignisbehandlungsroutinen... Wie???
hallo lucky,
Delphi-Quellcode:
ich hoffe das hilft.
procedure MeineConnection(Sender:TObject);
begin Showmessage('verbinden...'); end; uund im Create; ... ... ClientSocket.OnConnect := MeineConnection; ... ... raik edit // sehe gerade , daß dich noch keiner begrüßt hat: herzlich willkommen in der delphipraxis |
Re: Ereignisbehandlungsroutinen... Wie???
es ist egal wie die Ereignisproceduren dann heißen muss. Und wie die Ereignisproceduren auszusehen haben ist auch recht einfach.
Das "OnClick" des Buttons ist vom Typ "TNotifyEvent". Und wenn du dann nach der Deklaration von TNotifyEvent suchst findest du "TNotifyEvent = procedure(Sender: TObject) of object;" und somit weißt du das dein procedurekopf so auszusehen hat:
Delphi-Quellcode:
procedure DasObject.Irgendeinname(Sender: TObject);
|
Re: Ereignisbehandlungsroutinen... Wie???
Zitat:
so habe nun folgende procedure erstellt:
Code:
OnCreate sieht so aus...
procedure TForm1.ClientSocketConnect(Sender: TObject);
begin BConnect.Enabled := False; //TButton: BConnect BDisconnect.Enabled := True; //TButton: BDisconnect end;
Code:
Aber wenn ich das Starten will bekomm ich auf ClientSocket.OnConnect := ClientSocketConnect;
procedure TForm1.FormCreate(Sender: TObject);
begin ... ClientSocket.OnConnect := ClientSocketConnect; ... end; Den Fehler: [Fehler] SC1.pas(37): Inkompatible Typen: 'Liste der Parameter ist unterschiedlich' :? @SirThornberry Das versteh ich nicht wirklich... Seh ja auch nirgends ein: TForm1.OnCreate := TForm1.FormCreate; Obwohl das doch auch irgendwo sein muß oder?? MFG Keda |
Re: Ereignisbehandlungsroutinen... Wie???
Hi Lucky,
Du siehst die Zuweisung der OnCreate-Routine des Forms nicht, da dies in der dfm-Datei geschieht. Zieh mal eine TClientSocket-Kompo aufs Form, dann kannst du die Routinen über den OI einfügen. Greetz alcaeus |
Re: Ereignisbehandlungsroutinen... Wie???
jup hab ich schon gefunden:
Code:
...
object Bconnect: TButton Left = 168 Top = 56 Width = 75 Height = 25 Caption = 'Connect' TabOrder = 0 OnClick = BconnectClick end ... Kann ich dort eigendlich auch meine TClientSocket per Hand einfügen? Es gibt ne Socket Komponente? Hab irgendwie keine gefunden :( Ich habe Delphi 7 - Enterprise zur info... Aber warum bekomm ich in dem oben genannten Beispiel eine Fehlermeldung? Wo liegt da mein Fehler? Ich find ihn nicht :wall: Edit: Hab nun mal alles nochmal vereinfacht nachgebaut, vielleicht findet ja wer den Fehler... Ich seh ihn irgendwie net...
Code:
In der Zeile ClientSocket.OnConnect := ClientSocketConnect;
unit SC1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp; type TForm1 = class(TForm) Bconnect: TButton; EIp: TEdit; EPort: TEdit; BDisconnect: TButton; procedure FormCreate(Sender: TObject); procedure BconnectClick(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure BDisconnectClick(Sender: TObject); procedure ClientSocketConnect(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; ClientSocket : TClientSocket; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin ClientSocket := TClientSocket.Create(nil); ClientSocket.OnConnect := ClientSocketConnect; end; procedure TForm1.BconnectClick(Sender: TObject); begin ClientSocket.Host := EIp.Text; ClientSocket.Port := StrToInt(EPort.Text); ClientSocket.Open; end; procedure TForm1.FormDestroy(Sender: TObject); begin ClientSocket.Destroy; ClientSocket := nil; end; procedure TForm1.BDisconnectClick(Sender: TObject); begin ClientSocket.Close; end; procedure TForm1.ClientSocketConnect(Sender: TObject); begin BConnect.Enabled := False; BDisconnect.Enabled := True; end; end. kommt der Fehler: [Fehler] SC1.pas(37): Inkompatible Typen: 'Liste der Parameter ist unterschiedlich' und ka warum... MFG Keda |
Re: Ereignisbehandlungsroutinen... Wie???
OnConnect von TClientsocket ist vom Typ "TSocketNotifyEvent" und das ist wie folgt definiert:
Delphi-Quellcode:
TSocketNotifyEvent = procedure (Sender: TObject; Socket: TCustomWinSocket) of object;
|
Re: Ereignisbehandlungsroutinen... Wie???
Zitat:
Big THX nu funzt alles :hello: :hello: MFG Keda |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 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