Hallo Forum
Datasnap ist schon ne tolle Sache, hat aber auch seine Tücken.
Auf dem Client hole ich mittels Datasnap ein einfaches Objekt. Dieses muss ich nicht freigeben, Datasnap übernimmt dies.
Wenn ich das gleiche Objekt nun dem Server wieder zusende, erhalte ich beim Beenden der Anwendung eine Ungültige Zeigeroperation, vermutl. weil Datasnap das Objekt zweimal freigeben möchte.
Server
Delphi-Quellcode:
type
{$METHODINFO ON}
TMyClass = class(TComponent)
function GetTransport: TSendeMich;
procedure SetTransport( _obj: TSendeMich );
end;
{$METHODINFO OFF}
implementation
{ TMyClass }
function TMyClass.GetTransport: TSendeMich;
begin
Result:= TSendeMich.Create;
Result.A:= 3;
Result.B:= 1;
end;
procedure TMyClass.SetTransport(_obj: TSendeMich);
begin
{}
end;
Client
Delphi-Quellcode:
procedure TForm1.ButtonCalcClick(Sender: TObject);
var
Temp: TMyClassClient;
SendeMich: TSendeMich;
begin
Temp:= TMyClassClient.Create(SQLConnection1.DBXConnection);
try
SendeMich:= temp.GetTransport;
temp.SetTransport( SendeMich );
//ohne dieser Funktion wird keine Exception geworfen
finally
temp.Free;
end;
end;
Gibt es einen analogen "OwnsObject"-Parameter, damit Datasnap weiss, dass dieses Objekt nicht zerstört werden muss?
Herzlichen Dank
RedOne