Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
Колбасьев ©   (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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.037 c
1-1091173128
Дрейфусятина
2004-07-30 11:38
2004.08.15
Как сделать хитрый поиск по листбоксу ?


3-1090315249
Kaginava
2004-07-20 13:20
2004.08.15
работа с MySQL


3-1090280687
bigfoot
2004-07-20 03:44
2004.08.15
Вопрос по синтаксису запроса в TQUERY


4-1088107162
AlexZ
2004-06-24 23:59
2004.08.15
from rsrc to file.


14-1090820709
Izyum
2004-07-26 09:45
2004.08.15
Эмулятор терминала





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский