uses
ActiveX; //PSafeArray
function ArrayToSafeArray(DataArray: array of string):PSafeArray;
var
VarBound: TVarArrayBound;
psa: PSafeArray;
i: Integer;
AV1: OleVariant;
OleValue: OleVariant;
begin
VariantInit(OleValue);
VarBound.ElementCount := High(DataArray) + 1;
psa := SafeArrayCreate(VT_BSTR, 1, VarBound);//创建SafeArray对象
for i := Low(DataArray) to High(DataArray) do
begin
AV1 := DataArray[i];
SafeArrayPutElement(psa, i, TVarData(AV1).VPointer^);
end;
result:=psa;
end;