次のコード スニペットを検討してください(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 でトラフィックをキャプチャすると、 と の両方が Unicode 文字列として転送されていることがわかりStrVal
ますBase64Val
。できれば、 の Unicode 変換を避けたいと思いBase64Val
ます。私はすべてのタイプを見てきましたが、文字の配列を転送できるVariant
もの以外は見当たりません。varString
バイトのバリアント配列を作成する方法を示すこの質問を見つけました。を使用する代わりに、この手法を使用できると考えていAnsiString
ます。Unicode 文字列に変換せずに非 Unicode 文字データの配列を Variant に割り当てる別の方法はありますか?