配列を持っているというバリアントを返すWebService、つまりvarArrayがあり、varArrayのデータを取得する方法を知りたいです。
助けてくれてありがとう。
配列を持っているというバリアントを返すWebService、つまり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
基になるデータ型がで、配列が 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
を変更して一致させる方法は明らかです。