Я хотел бы использовать 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 …
Процесс импорта привел к ошибочному объявлению. Так должно быть:
function Fetch(out vValue: OleVariant): Integer;
если семантика вне, и
function Fetch(var vValue: OleVariant): Integer;
если семантика IN / OUT.
Конечно, любой из них будет работать, но вы можете использовать var или out, чтобы выразить намерение вызывающей стороне.
Других решений пока нет …