@Interface

Существует ли альернатива Delphi Invoke для FreePascal?

Добрый день!

Я ищу способ вызвать сделать следующее:

Есть набор функций, процедур, методов, конструкторов с разным набором параметров, типом и т.д.
// например:
function Fn1(param: Integer; param2: String): Byte;
function Fn1(param: TPoint): String;
procedure Fn1(param: Object);
//...


Затем я хочу вызывать эти функции, но я не могу просто написать:
byteVar := Fn1(1, 'hello');

Я ищу решение вида:
function CallFn(FnPointer: pointer; Args: array of Variant): Variant;
// ...
ResultValue := CallFn(@MessageBox, [0, 'hello', 'world', '0']);

Т.е. задается указатель на фунцию, список аргументов в каком-то виде и происходит ее вызов.

Насколько я понимаю для этого можно использовать Invoke из enhanced RTTI (что имеет Delphi 2010+).

Однако меня интересует можно ли подобное провернуть на FreePascal'е? Быть может есть готовые библиотеки, которые покрывают часть возможностей enhanced RTTI для FPC? Возможно есть более низкоуровневое или менее удобное решение?

Есть например www.swissdelphicenter.ch/torry/showcode.php?id=1745 такое решение для вызова функций из Dll, где параметры передаются как array of Pointer.

P. S. Интересует также вызов подобным образом конструкторов.
  • Вопрос задан
  • 256 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vapaamies
@Vapaamies
Разработчик будущей ОС для ПК размером 250 МБ
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы