【发布时间】:2016-12-28 03:00:06
【问题描述】:
我想使用 COM/DCOM 在两台 Windows PC 计算机之间传输一些具有以下结构的记录。我更喜欢一次传输一个数组,比如 100 个 TARec 成员,而不是单独传输每条记录。目前我正在使用 IStrings 执行此操作。我希望使用原始记录来改进它,以节省在两端对字符串进行编码/解码的时间。请分享您的经验。
type
TARec = record
A : TDateTime;
B : WORD;
C : Boolean;
D : Double;
end;
所有记录的字段类型都与 OLE 兼容。非常感谢。
【问题讨论】:
-
这个问题最好用 winapi 和 c++ 标签来问。这将使您有更好的机会找到 com 专家。如果我是你,我会将 Delphi 记录转换为 C++ 结构。
-
VarArray类型为varByte怎么样?您可以使用VarArrayLock和VarArrayUnlock设置或提取数据。只需使用指针数学或强制转换为表示array[0..somethingbig] of TARec的类型的指针即可传递或提取数据。 -
您好,谢谢 David 的建议,Rudy 我会执行您的建议并反映结果。
-
COM 方式是带有用户定义封送器的 SAFEARRAY 记录。正如 Rudy 建议的那样,您可能会摆脱 blitting,但如果您的字符串是任何其他不可 blittable 类型,则不会。