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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2015, 10:25   #1
ProRockX
Пользователь
 
Аватар для ProRockX
 
Регистрация: 26.09.2015
Сообщений: 12
Вопрос Передача одной процедуры другой в качестве входящего параметра

Добрый день. Помогите, пожалуйста, решить проблему.

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

Код:
type 
Tproc : procedure;
...


procedure TfmMain.acEditExecute(Sender: TObject);
begin
  pr_WorkWithManyRecords(@pr_EditOneObject)
end;

procedure TfmMain.pr_WorkWithManyRecords(start_procedure: pointer);
begin
   TProc(@start_procedure); //Пытаюсь запустить процу, но получаю: Error, Variable Required.
end;
Подскажите, пожалуйста, где я ошибся.
ProRockX вне форума Ответить с цитированием
Старый 02.10.2015, 10:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure TfmMain.acEditExecute(Sender: TObject);
begin
  pr_WorkWithManyRecords(@pr_EditOneObject)
end;

procedure TfmMain.pr_WorkWithManyRecords(start_procedure: TProc);
begin
   start_procedure(); 
end;
Если не ошибаюсь.
А вообще наверное стоит по-современному делать: События назначить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.10.2015, 11:32   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Можно и пойнтер привести к нормальному типу.
Код:
type 
Tproc : procedure;
...


procedure TfmMain.acEditExecute(Sender: TObject);
begin
  pr_WorkWithManyRecords(@pr_EditOneObject)
end;

procedure TfmMain.pr_WorkWithManyRecords(start_procedure: pointer);
var
  proc: TProc;
begin
   proc:= TProc(start_procedure);  // без @, это ж уже указатель!
   proc(); // вызов
end;
ВНИМАНИЕ!
УВАГА!!
АХТУНГ!!!
АТТЕНШН!!!!

Shit-code detected!
Код не отлаживал. Писал на заборе!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранение и передача метода в качестве параметра RobotMan C# (си шарп) 1 19.06.2012 20:48
Передача хранимой процедуры в качестве параметра в функцию xabik БД в Delphi 5 04.08.2011 11:08
Использование имени процедуры в качестве параметра другой процедуры Alexey355 Помощь студентам 1 23.04.2011 13:59
Delphi Fortran DLL передача процедуры в качестве параметра gimlis Помощь студентам 1 23.03.2011 22:52
Передача метода класса в качестве параметра в другой метод Dmytry87 Общие вопросы C/C++ 0 12.11.2008 15:28