我有一个最初使用XE5开发的datasnap服务器应用程序,可以在移动平板电脑上访问服务器上的Firebird数据库时使用客户端应用程序。我用XE7重新编译了代码。我必须对代码进行编译而没有任何错误的唯一更改是将DataSnap.DSProviderDataModuleAdapter添加到方法单元的使用中。已经更换了服务器上的服务器应用程序(停止服务/卸载/重新安装/启动服务),现在我无法再在服务器上的数据库中插入/更新记录。每当我到ApplyUpdates(0)的代码行时,我都会收到以下错误:
远程错误:模块Snackerservice.exe中地址0093CB3F处的访问冲突。读取地址00000000。
从数据库中检索要在平板电脑上显示的数据不是问题,因此连接正常。
如果我将服务器应用程序更改回XE5下开发的应用程序......一切正常。另一个奇怪的事情是,当使用'localhost'访问我的开发机器上的数据库副本时,XE7编译的应用程序没有问题......只有在通过IP连接访问服务器时才会出现。
有人可以帮我解决这个令人沮丧的问题。
Bill Zwirs
为了让它更清晰一点,这里有一些导致问题的代码:
iLic := ServerMethodsClient.Get_Licences;
iDev := ServerMethodsClient.Get_NumDevices;
if (iDev < iLic) then
begin
iDevID := ServerMethodsClient.Get_NewDevID;
MobClientDM.DevicesClient.Open;
MobClientDM.DevicesClient.Insert;
MobClientDM.DevicesClientDEVID.AsInteger:= iDevID;
MobClientDM.DevicesClientMACADDRESS.AsString := sMacAddress;
MobClientDM.DevicesClient.Post;
if (MobClientDM.DevicesClient.ChangeCount > 0) then
MobClientDM.DevicesClient.ApplyUpdates(0); ....................Error occurs here
end;
答案 0 :(得分:2)
问题终于解决了。
当我在服务器上安装服务器应用程序时,我还将Midas.dll添加到工作正常的目录,直到我使用XE7编译。所以我现在在服务器应用程序的uses子句中包含了MidasLib,并从安装目录中删除了Midas.dll文件。编译和安装,所有工作再次好。
希望这有助于其他可能遇到类似问题的人。
Bill Zwirs