gpt4 book ai didi

Delphi XE2 Datasnap 回调

转载 作者:行者123 更新时间:2023-12-01 16:44:42 26 4
gpt4 key购买 nike

我正在尝试进行回调,发送不同的对象类型和对象的一些额外信息。所以我做了这门课:

  TCallBackObject = class
Sender : string;
ObjectClass : string;
Obj : TObject;
Status : integer;
ID : integer;
end;

在不同的情况下,我在 Obj 字段中创建不同的对象,但在执行 DSServer.BroadcastObject 时总是收到错误消息“Internal: Cannot instantiate object ...”

这是我非常简单的示例:http://www.4shared.com/file/fONlAGM3/DataSnapExample.html

请查看示例并告诉我出了什么问题...

最佳答案

在客户端,对象类不在可执行文件中。可以肯定的是,尝试一下这张脏支票。在客户端代码中创建引用所使用的类的引用。例如。

TForm6 = class(TForm)
SQLConnection1: TSQLConnection;
DSClientCallbackChannelManager1: TDSClientCallbackChannelManager;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure OnExecute(AValue: TObject);
private
c: TCat; //dummy refernce to the class
d: TDog; //dummy refernce to the class
co: TCAllbackObject; //dummy refernce to the class
public
{ Public declarations }
end;

现在应该可以工作了。

更简洁的方法是为每个类使用一个空的寄存器类方法。如下:

  TCallBackObject = class
Sender: string;
ObjectClass: string;
Obj: TObject;
Status: integer;
ID: integer;
class procedure Register;
end;
...
class procedure TCallBackObject.Register;
begin
//
end;

initialization

TCallBackObject.Register;

end.

关于Delphi XE2 Datasnap 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8516890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com