safearraygetdata函数在Delphi中使用safearray作为输入参数而不是vararray

1 delphi delphi-xe2

在Delphi中编程(在xe2中)我在一个dll中有一个程序,它返回一个pSafeArray 我知道它应该指向一个double数组来检索一个我不能使用的元素safearraygetelement(),因为它使用了一个VarArray输入参数.这将导致不兼容的类型编译器错误.获取元素的正确方法是什么?

RRU*_*RUZ 5

SafeArrayGetElement功能在ActiveX单位中定义为

function SafeArrayGetElement(psa: PSafeArray; const rgIndices; out pv): HResult; stdcall;
Run Code Online (Sandbox Code Playgroud)

因此,您可以将此功能与PSafeArray一起使用.试试这个样本

var
  LArray: PSafeArray;
  rgIndices, LBound, HBound : Integer;
  DoubleValue: Double;
begin
  //LArray:=.....
  SafeArrayGetLBound(LArray, 1, LBound);
  SafeArrayGetUBound(LArray, 1, HBound);
  for rgIndices := LBound to HBound do
  begin
    SafeArrayGetElement(LArray, rgIndices, DoubleValue);
     // do something
  end;

end;
Run Code Online (Sandbox Code Playgroud)