Ich kann das OnUDPRead-Ereignis nicht mit IdUDPServer verknüpfen.So verknüpfen Sie das OnUDPRead-Ereignis
-Code lautet wie folgt:
uses
System.SysUtils, IdUDPServer, IdGlobal, IdSocketHandle, Classes;
var
udp: TIdUDPServer;
buffer: TIdBytes;
myBinding: TIdSocketHandle;
procedure UDPRead (Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
bytes_received: integer;
begin
bytes_received:= AData.size;
end;
begin
myBinding := udp.Bindings.Add;
myBinding.IP := '0.0.0.0';
myBinding.Port := 5100;
udp.OnUDPRead := UDPRead; // Error occurs here
udp.Active := True;
end.
ich die Fehlermeldung erhalten:
[dcc32 Error] ACUR401_20170802_UDPServer.dpr(16): E2029 ';' expected but 'OF' found
[dcc32 Error] ACUR401_20170802_UDPServer.dpr(28): E2009 Incompatible types: 'method pointer and regular procedure'
ich meine Schwierigkeiten glauben ist, dass ich nicht in der Lage bin, die Eventhandler dem Verfahren zu verbinden.
Es muss eine Objektmethode sein. Was Sie haben, ist ein regelmäßiger Vorgang. – Victoria
Die Fehler, die Sie melden, stimmen nicht mit dem von Ihnen angegebenen Code überein. Details sind wichtig. Es sieht so aus, als hätten Sie versucht, '' object' 'am Ende Ihrer Prozedurdeklaration anzubringen, zumindest in einer anderen Version Ihres Codes. Wenn Sie eine Instanz einer Klasse nicht instanziieren möchten, verwenden Sie einfach eine Klassenmethode. –