Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.15;
Скачать: CL | DM;

Вниз

Запуск процедуры по указателю   Найти похожие ветки 

 
Колбасьев ©   (2004-07-03 12:21) [0]

Вроде бы в Object Pascal нет встроенных средств работы с процедурами, переданными по указателю (дана точка входа).
Сейчас пишу на ассемблере процедурку, но может кто подскажет готовое решение.


 
MBo ©   (2004-07-03 12:25) [1]

Procedural types в хелпе


 
Anatoly Podgoretsky ©   (2004-07-03 12:25) [2]

Есть


 
Digitman ©   (2004-07-03 12:27) [3]

type
 TMyProc = procedure(a: Integer);

..

procedure MyRealProc(a: Integer);
begin
 ...
end;
..
var
 MyProc:= TMyProc;

..

MyProc := @MyRealProc; //расчет адреса точки входа

MyProc; // собственно вызов

или ты не об этом ?


 
Колбасьев ©   (2004-07-03 12:29) [4]

А нет, чтобы @MyRealProc, но бы предопределенного процедурного типа:
type
TMyProc = procedure(a: Integer);
;-)


 
Колбасьев ©   (2004-07-03 12:37) [5]

Выше вместо "бы" читать "без" ;-)


 
VMcL ©   (2004-07-03 12:38) [6]

>>Колбасьев ©  (03.07.04 12:29) [4]

1. Компилятор по-твоему что - должен угадывать количество и тип передаваемых параметров?

2. Pointer - ?


 
Digitman ©   (2004-07-03 12:39) [7]


> Колбасьев ©   (03.07.04 12:29) [4]
> А нет, чтобы @MyRealProc, но бы предопределенного процедурного
> типа:
> type
> TMyProc = procedure(a: Integer);
> ;-)


что-то я не понял тебя ..
TMyProc и есть предопределенный тобой процедурный тип


 
Digitman ©   (2004-07-03 12:47) [8]

да пожалуйста !

procedure MyRealProc1(a: Integer); stdcall;
begin
...
end;

procedure MyRealProc2(a, b: Integer); cdecl;
begin
...
end;

procedure MyRealProc3(a, b, с: Integer);
begin
...
end;

..
var
MyProc: Pointer;

..

MyProc := @MyRealProc1;
asm
push 1
call dword ptr [MyProc];
end;
..

MyProc := @MyRealProc2;
asm
push 2 //параметр b
push 1 //параметр a
call dword ptr [MyProc]
add esp, 8
end;
..

MyProc := @MyRealProc3;
asm
mov eax, 1 //параметр a
mov ecx, 2 //параметр b
mov edx, 3 //параметр c
call dword ptr [MyProc]
end;


 
Digitman ©   (2004-07-03 12:51) [9]


> Колбасьев ©   (03.07.04 12:37) [5]


предопределение процедурных и функциональных типов для того и придумано, чтобы ты не занимался мазохизмом, а переложил заботу о нудных проверках типов на могучие плечи компилятора



Страницы: 1 вся ветка

Текущий архив: 2004.08.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.05 c
3-1090358453
sashok
2004-07-21 01:20
2004.08.15
Interbase


1-1091082837
AleKo
2004-07-29 10:33
2004.08.15
Виртуальная колонка в DBGridEh


14-1090821412
Vlad Oshin
2004-07-26 09:56
2004.08.15
Повышать или не повышать приоритет процесса?


1-1091044443
CrMhs
2004-07-28 23:54
2004.08.15
Как удалить из файла запись


14-1091284985
Водитель трамвая
2004-07-31 18:43
2004.08.15
Хочу убить свой винт с почестями. Как это сделать?