![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Открытые массивы и IDispatch
atruhin © (2006-05-22 19:24:00)Еще вопрос. Мало работал с COM :(.
Нужно предать в процедуру открытый массив.
Как лучше описывать procedure A(V: variant);
и создавать вариантный массив, или можно по другому?
tesseract (2006-05-26 14:03:00) [1]используй 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;
Polevi (2006-05-23 09:40:00) [2]нормально
VarArrayCreate, VarArrayLock и тд