考虑以下 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
) Result 自动封送并在客户端应用程序和DataSnap服务器之间发送。
当我使用Wireshark捕获流量时,我看到StrVal
和Base64Val
都作为Unicode字符串传输。如果可以,我想避免对Base64Val
进行Unicode转换。我查看了所有Variant
类型,除了varString
之外,没有看到其他可以传输字符数组的选项。
我找到了这个问题,展示了如何创建变体字节数组。我在想,我可以使用这种技术代替使用AnsiString
。但我很好奇,是否有另一种方法可以将非Unicode字符数据数组分配给Variant而不进行转换为Unicode字符串?