【发布时间】:2019-11-08 13:14:25
【问题描述】:
我有多层应用程序,它使用 OleVariant 变量通过自定义通信框架跨线路发送和接收数据。通常这个 OleVariant 变量的内容来自 TClientDataSet.Data(当然,它是 OleVariant 类型)。我怀疑通信框架会更改此 OleVariant 变量的内容,因此我想在发送数据之前和接收数据之后转储变量的内容。我使用代码:
TmpOrder: OleVariant;
Tmp: TStringList;
Tmp:=TStringList.Create;
try
Tmp.LoadFromFile('D:\test.txt');
Tmp.Add('---');
Tmp.Add(TmpOrder);
Tmp.SaveToFile('D:\test.txt');
finally
Tmp.Free;
end;
但是文件的内容是没有意义的。例如,文件的以下内容可以代表TClientDataSet.Data的内容:
---
??
当然,发生了一些不同的事情。
那么 - 如何捕获 OleVariant 变量的内容。
将 TClientDataSet 保存为 XML 不是我的选择,因为通信使用 OleVariant 而不是 XML。
我正在使用 Unciode Delphi(Delphi 2009 及更高版本)。
【问题讨论】:
-
这取决于变体对象内部的内容。从这里不能说。
-
OleVariant 几乎可以保存任何内容,包括对应用程序接口的引用。如果不具体了解该变体中的内容,就不可能知道如何将其保存到文件中(甚至无法确定这是否可能——例如,您无法将 Excel 或 Word 的实例保存到文件中)。跨度>
-
是什么阻止了您在发送端和使用 TCDS 的 SavetoFile(..., dfXML) 然后比较两个 XML 文件?
标签: delphi debugging delphi-2009 variant tclientdataset