Задать вопрос
@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. Интересует также вызов подобным образом конструкторов.
  • Вопрос задан
  • 261 просмотр
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vapaamies
@Vapaamies
Психанул и снес свои ответы не отмечающим решения…
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы