如何转换一个字节数组变量? 我有应该接收的字节数组一个WebService,但是它只接受VARIANT类型的变量,我不知道怎么做才能把它作为参数的Web服务转换。
谢谢
如何转换一个字节数组变量? 我有应该接收的字节数组一个WebService,但是它只接受VARIANT类型的变量,我不知道怎么做才能把它作为参数的Web服务转换。
谢谢
根据注释线索,你需要创建一个SAFEARRAY
字节。 这是德尔福这样做:
V := VarArrayCreate([0, N-1], varByte);
或者,如果SAFEARRAY
基于需要1索引:
V := VarArrayCreate([1, N], varByte);
然后,可以使用填充在一个循环中该阵列V[i] := ...
如果你有一个德尔福动态array of Byte
,并预期SAFEARRAY
使用基于0的索引,那么你可以简单地写:
V := a;
如果你有大量的数据通过元素戳了RTL提供数据的传输则该元素是几乎无望。 甚至简单的v := a
在元件方法导致由元件复制,这将是对大量数据的可怕缓慢。
在你的位置,我的blit一气呵成阵列。 像这样:
var
i: Integer;
a: array of Byte;
V: Variant;
SafeArray: PVarArray;
....
// populate a
V := VarArrayCreate([0,high(a)], varByte);
SafeArray := VarArrayAsPSafeArray(V);
Move(Pointer(a)^, SafeArray.Data^, Length(a)*SizeOf(a[0]));
或者,如果你需要使用基于1的索引:
V := VarArrayCreate([1,Length(a)], varByte);
SafeArray := VarArrayAsPSafeArray(V);
Move(Pointer(a)^, SafeArray.Data^, Length(a)*SizeOf(a[0]));