我有一个 WebService,它返回一个 Variant 我它有一个数组,即 varArray,想知道如何获取 varArray 的数据。
谢谢您的帮助。
我有一个 WebService,它返回一个 Variant 我它有一个数组,即 varArray,想知道如何获取 varArray 的数据。
谢谢您的帮助。
要获取 varArray 的内容,您必须使用VarArrayLowBound
andVarArrayHighBound
函数,然后使用循环您可以遍历数组以获取数据。
试试这个样本
var
i : integer;
s : string;
begin
for i := VarArrayLowBound(vArray, 1) to VarArrayHighBound(vArray, 1) do
s:=vArray[i];//copy the the content of the array i element into a string
假设基础数据类型是Byte
,并且数组是一维的,我解决这个问题的方法如下:
function GetBytesFromVariant(const V: Variant): TBytes;
var
Len: Integer;
SafeArray: PVarArray;
begin
Len := 1+VarArrayHighBound(vArray, 1)-VarArrayLowBound(vArray, 1);
SetLength(Result, Len);
SafeArray := VarArrayAsPSafeArray(V);
Move(SafeArray.Data^, Pointer(Result)^, Length(a)*SizeOf(a[0]));
end;
如果底层元素类型是其他东西,例如Word
等Integer
,那么如何修改它以匹配应该是显而易见的。