Использование параметра VARIANT * в методе ActiveX в Free Pascal

Я хотел бы использовать ActiveX-Object в проекте Free Pascal, из документации я знаю, что один метод объявлен как

long Fetch(VARIANT* vValue)

где vVariant будет содержать результат (целое число или значение с плавающей запятой) после вызова.

Функция «Библиотека типов импорта» LazActiveX преобразовала это в

_SomeApi = dispinterface
['...']
...
function Fetch(vValue: OleVariant):Integer;
...
end;

Я был немного удивлен OleVariant, потому что должны быть возвращены только простые типы данных. Я также получаю EOleSysError (Несоответствие типов) при вызове Fetch (v) с v: OleVariant.

Может ли кто-нибудь объяснить мне, как правильно объявить этот метод в TLB или как получить доступ к данным? К сожалению, у меня нет источника Fetch (), и некоторые из этих вещей покрываются NDA …

1

Решение

Процесс импорта привел к ошибочному объявлению. Так должно быть:

function Fetch(out vValue: OleVariant): Integer;

если семантика вне, и

function Fetch(var vValue: OleVariant): Integer;

если семантика IN / OUT.

Конечно, любой из них будет работать, но вы можете использовать var или out, чтобы выразить намерение вызывающей стороне.

3

Другие решения

Других решений пока нет …