我再次在一个情况下,我花了大量的时间试图定制datasnap回调样本满足我的需求。 我是老学校的OOP程序员,在我的“工具箱”PODO风格中有几个非常大的对象hierakies :-) ..有这个很棒的datasnap功能,我想利用回调的力量。德尔福datasnap回调 - 广播问题
但是 - 当我实现它时......它只是失败......(FASTMM4报告mem泄漏)。
尝试并创建一个简单的VCL datasnap服务器 - 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-建议:请给我们解释一下**它是如何失败的** - 会发生什么?德尔福有什么例外?你收到什么错误信息?我不认为你会通过简单地告诉我们'它只是失败'并要求我们去建立一个datasnap服务器并找出什么会发生或没有发生什么而得到很多答案。 – Vector 2011-05-08 07:48:56
@Mikey ...对不起。当然我应该提供所有需要的信息。 当我说失败 - 这意味着违反行为..或正如我指出的。 Fastmm4报告mem泄漏。创建一个datasnap服务器应用程序。你实际上需要这么几个步骤/ cliks,就像启动一个新的vcl表单应用程序一样快:-) 下面是如何设置datasnap服务器 - 并使用回调的一个很好的例子。 http://edn.embarcadero.com/article/41374 唯一的区别就像我看到的那样,Im从服务器上播放......但这真的不应该是一个问题..或者它是什么? – 2011-05-08 18:40:42