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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2011, 20:02   #1
aleks.halk
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 14
По умолчанию Указатель на процедуру

подскажите кто знает
как получить указатель на процедуру?!
aleks.halk вне форума Ответить с цитированием
Старый 09.05.2011, 20:05   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Что значит получить?

Можно самому сделать:

Код:
type pr = procedure p(x: <Какой-то тип>)
       Pproc = ^pr
Вроде как-то так
Вадим Мошев вне форума Ответить с цитированием
Старый 09.05.2011, 20:11   #3
aleks.halk
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 14
По умолчанию

спрошу по другому
мне нужен адресс реальной процедуры

TtdVisitProc = procedure (aData : pointer;
aExtraData : pointer;
var aStopVisits : boolean);

function Traverse(aMode : TtdTraversalMode;
aAction : TtdVisitProc;
aExtraData : pointer;
aUseRecursion : boolean) : PtdBinTreeNode;

т.е. при вызове я должен передать адрес процедуры 2м параметром
или я что-то не так понимаю
aleks.halk вне форума Ответить с цитированием
Старый 09.05.2011, 20:22   #4
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию

Код:
...
type
  TMyProcType = procedure(AValue integer); // Объявили процедурный тип

...
// Процедура на которую надо получить ссылку
procedure MyProc(AValue integer);
begin
  ShowMessage(IntToStr(AValue));
end;

...
// вызов процедуры по ссылке
procedure Test;
var
  prcPtr: TMyProcType;
begin
  prcPtr := MyProc; // так
  //prcPtr := @MyProc; // или так
  //prcPtr := ^MyProc; // или так - до сих пор путаю ...
  prcPtr(1000);
end;
Как-то так. Точнее сказать не могу - дельфи перестали почему-то запускаться...
если надо получить ссылку на метод класса, то в обявление типа надо добавить of object:

Код:
type
  TMyProcType = procedure(AValue integer) of object;

Последний раз редактировалось Greek9000; 09.05.2011 в 20:29.
Greek9000 вне форума Ответить с цитированием
Старый 09.05.2011, 20:51   #5
aleks.halk
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 14
По умолчанию

//prcPtr := @MyProc; // или так
//prcPtr := ^MyProc; // или так - до сих пор путаю ...


и так и так не работает
aleks.halk вне форума Ответить с цитированием
Старый 09.05.2011, 21:57   #6
aleks.halk
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 14
По умолчанию

это конечно плохой, но все же выход из ситуации - создал DLL и использовал GetProcAddress
aleks.halk вне форума Ответить с цитированием
Старый 09.05.2011, 23:22   #7
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Код покажи. Есть мнение, что ты процедуру с методом перепутал.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 10.05.2011, 09:51   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
Сообщение от aleks.halk Посмотреть сообщение
//prcPtr := @MyProc; // или так
//prcPtr := ^MyProc; // или так - до сих пор путаю ...


и так и так не работает
там был еще один способ. Он тоже не работает?
prcPtr := MyProc; // так
//prcPtr := @MyProc; // или так
//prcPtr := ^MyProc; // или так - до сих пор путаю ...
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатель... Romario92 Общие вопросы C/C++ 16 22.10.2010 20:37
Указатель RobinVit Помощь студентам 3 05.05.2010 16:18
(!)указатель на указатель(!) (C)stalin(Cpp) Общие вопросы C/C++ 0 07.06.2009 15:32
Как передать указатель в процедуру??? kate4ka Общие вопросы Delphi 1 17.03.2008 12:49
Указатель n на m CESHNIK Общие вопросы C/C++ 7 07.03.2008 23:35