Текущий архив: 2007.01.21;
Скачать: CL | DM;
Вниз
Assembler&Delphi!!!!! Найти похожие ветки
← →
GrayFace © (2006-12-27 17:31) [40]> возвращаемый параметр
возвращаемый стандартным обработчиком результат
> Ее надо будет
написать :)
← →
4ert (2006-12-28 23:16) [41]Вот кажется нашёл решение, универсальная функция запуска API функции из её двойника, просто копируем определенное число байт со входа двойника на вход API функции:
const
MaxParam = 32; //макс.число параметров
function f2(a:pointer):integer; assembler;
asm
push edi
push esi
mov ecx,MaxParam*4
sub esp,ecx
mov edi,esp
lea esi,[ebp+8] //указатель на первый параметр двойника
rep movsd //копируем MaxParam*4 байт параметров
lea edi,[esp+MaxParam*4] //сохраняем значение esp
call [eax] //вызов API
mov esp,edi //восстанавливаем esp
pop esi
pop edi
end;
Всё работает отлично!!!! Функция API с теми же параметрами, что и функция двойник(которая собственно и запускает f2 с параметром: указатель на API функцию).....
правда после работы API функции выскакивает сообщение:
"
Project Project1.exe raised exception class EAccessViolation with message "Access Violation at address 001703CA
". Process stopped.
"
Не знает никто как лечить?
← →
GrayFace © (2006-12-29 11:58) [42]Stack Frame в таких случаях не создается. Надо самому создавать.
← →
Игорь Шевченко © (2006-12-29 12:02) [43]
> правда после работы API функции выскакивает сообщение:
> "
> Project Project1.exe raised exception class EAccessViolation
> with message "Access Violation at address 001703CA
> ". Process stopped.
> "
Двигатель был очень похож на настоящий, только не работал
Страницы: 1 2 вся ветка
Текущий архив: 2007.01.21;
Скачать: CL | DM;
Память: 0.54 MB
Время: 0.04 c