-
atruhin © (22.05.06 19:24) [0]Еще вопрос. Мало работал с COM :(.
Нужно предать в процедуру открытый массив.
Как лучше описывать procedure A(V: variant);
и создавать вариантный массив, или можно по другому? -
Polevi © (23.05.06 09:40) [1]нормально
VarArrayCreate, VarArrayLock и тд -
используй SafeArray.
Так примерчик :
function TCustomAddIn.GetNParam(var pArray : PSafeArray; lIndex: Integer ): OleVariant;
var varGet : OleVariant;
begin
SafeArrayGetElement(pArray,lIndex,varGet);
result := varGet;
end;
// просто функция для работы с psafeARRAY
// используйте для присвоению элементу массива значения
procedure TCustomAddIn.PutNParam(var pArray: PSafeArray; lIndex: Integer; var varPut: OleVariant);
begin
// импортирована из ActiveX
SafeArrayPutElement(pArray,lIndex,varPut);
end;
// Функция для получения размера pSafeArray
function TCustomAddIn.GetArrSize(var pArray: PSafeArray): integer;
begin
result:=pArray.rgsAbound[0].cElements;
end;