![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#10
|
|||
|
|||
|
А по теме.
тебе нужно разбить твою супер функцию на две или три части. Первая - получения адреса функции из DLL+всякие проверки. Вторая - разбор параметров и укладка их в массив. Безо всякого асма. И третья сам вызов - тут самая большая проблема, которая, если её выделить, может сильно упроститься. например до вот этого Код:
type
TFunction = function():DWord;stdcall;
function SuperCall(F:TFunction; const Params : Array of DWord):DWord;
var
I:Integer;
P:Pointer;
begin
for I:=0 to Length(Params)-1 do
begin
P:=@Params[i];
asm
mov EAX,P;
Push [EAX]; <<<<----======
end;
end;
Result:=F();
end; |