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

时间:2012-08-05 17:07:35

标签: delphi delphi-xe2

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

1 个答案:

答案 0 :(得分:5)

SafeArrayGetElement功能在ActiveX单元中定义为

function SafeArrayGetElement(psa: PSafeArray; const rgIndices; out pv): HResult; stdcall;

因此您可以将此功能与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;