Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2009, 10:41   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Запуск процедуры через указатель.

Запись:
Код:
TRec001 = Record
   SomeBit : Byte;
   Flag : Boolean;
   Proc : Pointer;
End;
Код:
Rec: TRec001;
Код:
Procedure Proca01;
 Begin
  Bla-bla-bla
 End;
Код:
Rec.Proc := @Proca01;
Как теперь запустить процедуру Proca01 через запись?

P.S. Способ почерпнул через АПИ:
Код:
  With WindowClass Do
  Begin
   Style := CS_PARENTDC;
   hIcon := LoadIcon(ApplHandle, MAKEINTRESOURCE('MAINICON'));
   lpfnWndProc := @WinProc;
   hInstance := ApplHandle;
   hbrBackground := COLOR_BTNFACE + 1;
   lpszClassName := 'TAliusForm';
   hCursor := LoadCursor(0, IDC_ARROW);
  End;
 End;
P.P.S. Можно конечно сделать по-быдлокодерски:
Код:
Rec[N]

Case N of
1: Proca01;
2: Proca02;
3: Proca03;
End;
Но не хотелось бы терять гибкость.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 16.11.2009 в 10:44.
Alex Cones вне форума Ответить с цитированием
Старый 16.11.2009, 11:14   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Легкий примерчикс, навевающий мудрые мысли :
Код:
type TProc=procedure;
 procedure p;
 begin
   write('erewr');
 end;
var pp:pointer;tpp:TProc;
begin
 pp:=@p;
 tpp:=p;
 tpp;
 Readln;;
end.
Пойдет такое антиб...кодерство?

P.S. Кстати ассемблерный CALL еще не отменял никто.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2009, 11:17   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
P.S. Кстати ассемблерный CALL еще не отменял никто.
Эм... Продемонстрируйте, силь ву пле.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 16.11.2009, 11:34   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Битте, Дритте:
Код:
type TProc=procedure;
 procedure p;
 begin
   write('erewr');
 end;
var pp:pointer;tpp:TProc;
begin
 pp:=@p;
 asm
   call [pp]
 end;
 Readln;;
end.
А если с параметрами процедура - это уже отдельный песня.
Там надо четко знать какие параметры.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2009, 11:39   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Мерси. Не, процедура без параметров.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск процедуры в конкретное время yulia Общие вопросы Delphi 11 09.12.2021 14:36
Запуск процедуры по дате Ant1Player Общие вопросы Delphi 3 22.05.2009 19:52
Работа с TStringList через указатель. Mixasik Общие вопросы Delphi 2 08.01.2009 12:51
Запуск процедуры из процедуры с дополнением 1sal1 Общие вопросы Delphi 3 06.10.2008 21:54
указатель мыши автоматически должен совершать клик по заданному месту на экране, через промежуток времени Deefrost Qt и кроссплатформенное программирование С/С++ 5 16.05.2008 20:25