将Delphi升级到10.1.2后,从客户端传ClientDataset的Delta数据到服务端程序时,出现var and out arguments must match parameter错误。后来查了服务端程序的相应函数:
UpdateDelta(const vDelta: OleVariant;strTableName,strKeyFieldName,strFieldList:String): String;
该函数的定义与客户服生成的接口文件ServerMethods.pas中的函数
function TSMSMClient.UpdateDelta(vDelta: OleVariant; strTableName: string; strKeyFieldName: string; strFieldList: string): string; 的定义存在不一致导致的。该问题在之前版本的Delphi中不会产生问题。将服务端程序该函数的定义修改成如下:
UpdateDelta(vDelta: OleVariant;strTableName,strKeyFieldName,strFieldList:String): String;
重新编译后,问题解决