How to use variant arrays in Delphi
You create it like that:
Declarations first
var VarArray: Variant; Value: Variant;
Then the creation:
VarArray := VarArrayCreate([0, Length - 1], varVariant);
or you could also have
VarArray := VarArrayCreate([0, Length - 1], varInteger);
Depends on the type of the data. Then you iterate like this:
i := VarArrayLowBound(VarArray, 1);HighBound := VarArrayHighBound(VarArray, 1);while i <= HighBound dobegin Value := VarArray[i]; ... do something ... Inc(i);end;
Finally you clear the array when you don't need it anymore. EDIT: (This is optional, see In Delphi 2009 do I need to free variant arrays? )
VarClear(VarArray);
That is all there is to it. For another example look at the official Embracadero Help
EDIT:
The array should be created only once. Then just use it like shown in the above example.
For the other side:
(assuming Value is the Variant parameter and the element type is WideString)
var Source: PWideStringArray;if VarIsArray(Value) then begin Source:= VarArrayLock(Value); try for i:= 0 to TVarData(Value).VArray^.Bounds[0].ElementCount - 1 do DoWhatEverYouWantWith(Source^[i]); end; finally VarArrayUnlock(Value); end;end;