OnRead ist eine procedure of object
und deswegen musst du die adresse deiner prozedur statt der prozedur selber übergeben, was dann im endeffekt einfach 2 '@'-Zeichen mehr wären
@ClientSocket1.OnRead := @myprozedur;
du könntest auch noch den umweg über eine variable gehen, is aber nur mehr tippsel-arbeit, das säh dann so aus
Delphi-Quellcode:
var SocketRead: TSocketNotifyEvent;
...
@SocketRead := @MyProzedur;
ClientSocket1.OnRead := SocketRead;