【发布时间】:2011-05-07 22:25:09
【问题描述】:
我又一次陷入了这样一种情况,即我花费了大量的时间来尝试根据自己的需要自定义 datasnap 回调示例。 我是老派 OOP 程序员,在我的“工具箱”PODO 样式中有几个非常大的对象层次结构 :-) .. 拥有这个出色的数据快照功能,我想利用回调的力量。
但是 - 当我实现它时......它只是失败了......(FASTMM4 报告内存泄漏)。
尝试创建一个简单的 VCL 数据快照服务器 - TCP。 并添加一个按钮和这个来源......
procedure TForm1.Button1Click(Sender: TObject);
var
// AObject : TObject;
aJSONVal : TJSONValue;
begin
// AObject := TObject.Create;
// ServerContainer1.DSServer1.BroadcastObject('SomeChannel','SomeCallbackID', AObject);
// AObject.Free;
aJSONVal := TJSONObject.Create;
ServerContainer1.DSServer1.BroadcastMessage('SomeChannel','SomeCallbackID',aJSONVal);
// aJSONVal.Free; // Mat pointed out that this is done by the broadcast.
end;
它会起作用 - 只要您继续使用 TJSONValue ... 但是尝试切换注释代码 - 你会明白我的意思。
我当然可以将我现有的所有代码都更改为 JSON ......但这根本不可接受。
有人知道如何使用 BroadcastOBJECT 或 NotifyOBJECT 吗?
问候 比亚恩
【问题讨论】:
-
@Bimmer_R- 建议:请向我们解释它是如何失败的 - 会发生什么?德尔福提出了什么例外?你得到什么错误信息?我认为您不会通过简单地告诉我们“它根本失败”并要求我们去构建一个数据快照服务器并找出发生了什么或没有发生什么来得到很多答案。
-
@Mikey ...对不起..我当然应该提供所有需要的信息。当我说失败时-这意味着违反访问权限..或者正如我指出的那样。 Fastmm4 报告内存泄漏。创建数据快照服务器应用程序。你实际上只需要很少的步骤/点击,它几乎和启动一个新的 vcl 表单应用程序一样快:-) 这是一个很好的例子,说明如何设置一个 datasnap 服务器 - 并使用回调。 edn.embarcadero.com/article/41374 我看到的唯一区别是,我是从服务器广播的……但这真的不应该是一个问题……或者是吗?
标签: delphi callback datasnap podo