![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#46
|
|||
|
|||
|
А по теме.
тебе нужно разбить твою супер функцию на две или три части. Первая - получения адреса функции из 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; |
|
#47
|
||||
|
||||
|
Цитата:
2 тоже уже реализовано ТС, и тоже без всякого асма. 3 уже реализовано мной и poli-smen'ом более рационально. Единственное что да, было бы неплохо с т.з. наглядности оформить получше и может быть разбить на части. Но это уже личное дело ТСа. ![]() |
|
#48
|
|||
|
|||
|
Цитата:
|