вызов функции через указатель на нее

Boris3box
Дата: 06.10.2006 16:54:09
как вызвать функцию через указатель на нее(Tpointer)
WildSery
Дата: 06.10.2006 16:59:09
Если ты не путаешь указатель на функцию и метод класса, то
Результат := TMySuperFuction(Pointer)(список параметров);
Boris3box
Дата: 06.10.2006 17:01:01
Загрузил библиотеку LoadLib;
и получил ее адрес
VPointer := GetProcAddress(hLib, 'AztecRender');
описание функции не знаю, и вызвать не получается.
A.K.
Дата: 06.10.2006 17:24:09
Описание функции все же придется узнать, иначе какой смысл ее вызывать.

// объявить процедурный тип:
type TLoadedFunck = function (...);

// процедурную переменную
var LoadedFunc: TLoadedFunc;

// Получим адрес функции
LoadedFunc := GetProcAddress(hLib, 'AztecRender');

// и вызываем
LoadedFunc(...);
A.K.
Дата: 06.10.2006 17:25:24
Ошибся выше немного...

// объявить процедурный тип:
type TLoadedFunck = function (...);

// процедурную переменную
var LoadedFunc: TLoadedFunc;

// Получим адрес функции
@LoadedFunc := GetProcAddress(hLib, 'AztecRender');

// и вызываем
LoadedFunc(...);
Boris3box
Дата: 06.10.2006 17:26:29
я знаю для чего нужна библиотека (для формирования кода aztec) но я не знаю сами передоваемые параметры, ориентировочно - строка
A.K.
Дата: 06.10.2006 17:33:10
Если строка, то вероятно будет так:

// объявить процедурный тип:
type TLoadedFunc = function (p: PChar): ....;

// процедурную переменную
var LoadedFunc: TLoadedFunc;

// Получить адрес функции
@LoadedFunc := GetProcAddress(hLib, 'AztecRender');

// Вызвать функцию
var1 := LoadedFunc('строка');
[/quot]
WildSery
Дата: 06.10.2006 17:39:25
Это может быть не функция, а процедура.
И без "@", в первый раз правильно было.
A.K.
Дата: 06.10.2006 19:32:35
WildSery
И без "@", в первый раз правильно было.


Да, действительно. Хотя ошибки не будет, т.к. "@" в данном случае проигнорируется. В моем случае просто дальше шла проверка существования функции "if @LoadedFunc <> nil then ...".