Я снова попал в ситуацию, когда я потратил неприличное количество времени, пытаясь настроить образцы обратного вызова datasnap для своих нужд.Я - программист ООП старой школы, и у меня есть несколько очень больших объектов Object в моем стиле PODO "toolbox" :-) .. и, обладая этой замечательной возможностью сбора данных, я хочу использовать силы обратного вызова.
НО- когда я его реализую ... он просто терпит неудачу ... (FASTMM4 сообщает об утечках памяти).
Попробуйте создать простой сервер 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?
С уважением, Бьярне