使用Delphi从VarArray获取数据

时间:2012-10-10 17:34:40

标签: arrays web-services delphi variant

我有一个WebService,它返回一个Variant me,它有一个Array,即varArray,想知道如何获取varArray的数据。

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

要获取varArray的内容,您必须使用VarArrayLowBoundVarArrayHighBound函数,然后使用循环迭代数组以获取数据。

试试这个样本

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

答案 1 :(得分:0)

假设基础数据类型是Byte,并且数组是1维的,我解决这个问题的方法如下:

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;

如果底层元素类型是其他类型,例如WordInteger等,应该明白如何修改此匹配。