Я пытаюсь перенести сервер Delphi Datasnap на Linux с Delphi Tokyo (10.2), и все кажется правильным, но если я установил событие OnDisconnect в TDSTCPServerTransport, программа войдет в бесконечный цикл.
Я пытаюсь использовать самый простой сервер моментальных снимков (только создать сервер с помощью мастера Delphi), и результат тот же.Здесь код dfm
object ServerContainer1: TServerContainer1
OldCreateOrder = False
Height = 271
Width = 415
object DSServer1: TDSServer
Left = 96
Top = 11
end
object DSTCPServerTransport1: TDSTCPServerTransport
Port = 13000
Server = DSServer1
Filters = <>
OnDisconnect = DSTCPServerTransport1Disconnect
Left = 96
Top = 73
end
object DSServerClass1: TDSServerClass
OnGetClass = DSServerClass1GetClass
Server = DSServer1
Left = 200
Top = 11
end
end
код события
procedure TServerContainer1.DSTCPServerTransport1Disconnect(
Event: TDSTCPDisconnectEventObject);
begin
writeln('XXXX');
end;
.dfm из ServerMethods (как мастер создания)
object ServerMethods1: TServerMethods1
OldCreateOrder = False
Height = 150
Width = 215
end
и .pas
unit ServerMethodsUnit1;
interface
uses System.SysUtils, System.Classes, System.Json,
Datasnap.DSServer, Datasnap.DSAuth;
type
{$METHODINFO ON}
TServerMethods1 = class(TDataModule)
private
{ Private declarations }
public
{ Public declarations }
function EchoString(Value: string): string;
function ReverseString(Value: string): string;
end;
{$METHODINFO OFF}
implementation
{%CLASSGROUP 'System.Classes.TPersistent'}
{$R *.dfm}
uses System.StrUtils;
function TServerMethods1.EchoString(Value: string): string;
begin
Result := Value;
end;
function TServerMethods1.ReverseString(Value: string): string;
begin
Result := System.StrUtils.ReverseString(Value);
end;
end.
При отключении клиента происходит событие.В конце я продолжаю отладчик и вижу, что при повторном вызове снова происходит событие и программа в цикле.Кто-нибудь может мне помочь?
На окнах все ок.Заранее спасибо.