제가 소켓 프로그램을 하던 중에 (강좌에서 본)동적으로 소켓을 생성, 이벤트를 처리 하
던 중 막히는 부분이 있어서, 이렇게 글을 올립니다.
procedure TForm1.socket3clientread(Sender: TObject; Socket: TCustomWinSocket);
var
i, j, m, bn : integer;
:
:
begin
bn := ( Sender as TServerSocket ).Tag;// <--- 이부분에서 type cast에러가
발생합니다.
tmp := Mysocket1[bn].Socket.ReceiveText;
:
:
socket3clientread(Sender, Socket);
end;
procedure TForm1.createsocketrtn(v_port: integer; v_tag: integer);
begin
Mysocket1[v_tag] := TServerSocket.Create(Application);
Mysocket1[v_tag].Name := 'svr_socket' + inttostr(v_port);
Mysocket1[v_tag].Port := v_port;
Mysocket1[v_tag].Tag := v_tag;
Mysocket1[v_tag].Open;
Mysocket1[v_tag].OnClientRead := socket3clientread;
end;
다음과 같이 해보세요.
if not (Sender is TServerSocket) then begin
showMessage('Sender is not TServerSocket');
exit;
end;