2011-12-15 2 views
2

Я пытаюсь сделать обратный вызов, отправив разные типы объектов и дополнительную информацию для объектов. Так что я сделал этот класс:Delphi XE2 Datasnap Callback

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

В различных ситуациях я создавать различные объекты в поле Obj, но я всегда получаю сообщение об ошибке при выполнении DSServer.BroadcastObject «Internal: Не удается создать экземпляр объекта ...»

Вот мой очень простой пример: http://www.4shared.com/file/fONlAGM3/DataSnapExample.html

Пожалуйста, смотрите пример и скажите мне, что это не так ...

ответ

2

на стороне клиента, классы объектов не в исполняемый файл. Обязательно проверьте этот грязный чек. Создайте ссылку в клиентском коде, ссылаясь на используемые классы. например.

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. 
+0

Daniele, вы гениальный :) Спасибо МНОГО! –

 Смежные вопросы

  • Нет связанных вопросов^_^