nonVCL Fehler mit OnRead von clientsocket
Hi,
ich versuche die OnRead property von Tclientsocket zum laufen zu bringen mein bisheriger versucht:
Delphi-Quellcode:
was mache ich falsch?
type
clsocket = class procedure onread(Sender: TObject; Socket: TCustomWinSocket); end; var cl:tclientsocket; procedure onread(Sender: TObject; Socket: TCustomWinSocket); var s_temp:string; begin end; procedure clsocket.onread(Sender: TObject; Socket: TCustomWinSocket); begin onread(Sender,Socket); end; begin clsocket.create; cl.OnRead:=clsocket.onread;// Fehlermeldung: Inkompatible Typen: 'TSocketNotifyEvent' und 'Procedure' end. mfg gandime |
Re: nonVCL Fehler mit OnRead von clientsocket
Hi,
1. Fehler ist, dass man Objekte nicht mit <varname>.Create erzeugt, sondern mit <varname> := <Klassenname>.Create, also bei Dir:
Delphi-Quellcode:
2. Schau Dir in den Sourcen mal die OnRead-Procedure an, genau so muss Du diese auch implementieren.
cl := clsocket.Create
|
Re: nonVCL Fehler mit OnRead von clientsocket
also das funktioniert auch nicht:
Delphi-Quellcode:
fehlermeldung:
cl := clsocket.Create
Zitat:
Delphi-Quellcode:
TSocketNotifyEvent = procedure (Sender: TObject; Socket: TCustomWinSocket) of object;
|
Re: nonVCL Fehler mit OnRead von clientsocket
Zitat:
Also: Wo legst du die Instanz von TClientSocket ab? Grundlegend würde sich ja die Variable cl eignen, da sie schon den richtigen Typ hat. Dann bleibt noch die Frage wo du die Instanz von clsocket ablegen willst. |
Re: nonVCL Fehler mit OnRead von clientsocket
1. Wieso nonVCL? :gruebel:
2. Wenn ich das richtig verstehe, willst du einfach nur das Ereignis OnRead einer Methode zuweisen. Dazu brauchst du irgendeine Klasse (die sicherlich noch mehr machen wird als nur OnRead) und setzt die property von onRead auf eine Methode mit der entspr. Deklaration:
Delphi-Quellcode:
type TSampleClass=class
constructor create; destructor destroy; override; procedure DoOnread(Sender: TObject; Socket: TCustomWinSocket); private clientSocket:Tclientsocket; end; //... constructor TSampleClass.create; begin inherited; clientsocket:=Tclientsocket.create; clientsocket.OnRead:=DoOnRead; end; destructor TSampleClass.Destroy; begin clientsocket.free; end; procedure TSampleClass.Doonread(Sender: TObject; Socket: TCustomWinSocket); begin // hier kannst du jetzt das Ereignis handhaben end; |
Re: nonVCL Fehler mit OnRead von clientsocket
danke
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 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