1

配列を持っているというバリアントを返すWebService、つまりvarArrayがあり、varArrayのデータを取得する方法を知りたいです。

助けてくれてありがとう。

4

2 に答える 2

5

varArrayのコンテンツを取得するには、VarArrayLowBoundandVarArrayHighBound関数を使用する必要があります。次に、ループを使用して、配列を反復処理してデータを取得できます。

このサンプルを試してください

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
于 2012-10-10T17:45:03.120 に答える
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;

基礎となる要素タイプが などの他のものである場合、WordこれIntegerを変更して一致させる方法は明らかです。

于 2012-10-30T17:30:54.587 に答える