我再次在一個情況下,我花了大量的時間試圖定製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