Показать сообщение отдельно
  #46  
Старый 25.10.2012, 11:34
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 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;
Ответить с цитированием