问题我已经解决了,开对应帖子。
解决方式如下:
我分析了一下Ado.Recordset的Xml编码格式,发现它是用Uft8编码的,所以把String转换为Uft8(在Delphi中Utf8string=string)编码格式,再编码成UniCode,赋值给中间WideString变量,接口读入时在反编码为Utf8String类型,于是问题解决了。所以在vs.net中使用接口时记得把生成的xml字符串编码成UniCode再传给接口,否则会失败的。
另外,我也实现了传递ADO.Recordset(OleVariant)的接口函数,简单测试后结果挺奇怪:经过多次编码用WideString传递数据集的接口效率竟然比直接用ADO.Recordset(OleVariant)传递数据集的接口效率还高。