客户端

时间:2015-05-09 07:57:23

标签: delphi datasnap

在客户端的datasnap应用程序中,我显然有一个clientmodule。关闭我的申请时收到错误:

ERROR 根据调试器的功能:

destructor TClientModule1.Destroy;
 begin
  FServerMethods1Client.Free;
  inherited;
 end;

compiller显示:

$ 0059ABC4的第一次机会异常。异常类$ C0000005,消息'访问冲突位于0x0059abc4:读取地址0x00000034'。处理Cajero.exe(1856)

1 个答案:

答案 0 :(得分:0)

根据你的截图,你得到一个低地址$ 34的AV,表示你正在对象引用上的方法是零。

试试这个虚拟代码

procedure TForm22.FormCreate(Sender: TObject);
begin
  TForm(nil).Next;
end;

看看AV上的地址。

当您尝试在对象上调用方法时,编译器会在名为VMT的表中查找该方法的偏移量。此值将添加到对象引用的地址中。

在您的代码中,您有property名为ServerMethods1Client,其定义如下:

property ServerMethods1Client: TServerMethods1Client read GetServerMethods1Client write FServerMethods1Client;

尝试将其更改为只读属性

property ServerMethods1Client: TServerMethods1Client read GetServerMethods1Client;

然后编译器会告诉你在哪里为你的财产分配一个零值。