考虑以下代码片段(在 Delphi XE2 中):
function PrepData(StrVal: string; Base64Val: AnsiString): OleVariant;
begin
Result := VarArrayCreate([0, 1], varVariant);
Result[0] := StrVal;
Result[1] := Base64Val;
end;
Base64Val
是编码为 Base64 的二进制值(因此没有null
字节)。( OleVariant
)结果在客户端应用程序和 DataSnap 服务器之间自动编组和发送。
当我使用 Wireshark 捕获流量时,我看到两者都StrVal
被Base64Val
传输为 Unicode 字符串。如果可以的话,我想避免Base64Val
. 我查看了所有类型,除了可以传输字符数组Variant
之外没有其他任何东西。varString
我发现这个问题显示了如何创建一个变体字节数组。我在想我可以使用这种技术而不是使用AnsiString
. 不过我很好奇,是否有另一种方法可以将一组非 Unicode 字符数据分配给 Variant 而无需转换为 Unicode 字符串?