powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно передавать процедуру в качестве параметра?
7 сообщений из 7, страница 1 из 1
Как правильно передавать процедуру в качестве параметра?
    #39793554
amadeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как правильно передавать процедуру в качестве параметра, чтобы затем ее можно было указать прямо при вызове другой процедуры? Что-то типа:

Код: pascal
1.
2.
3.
4.
5.
proc(
  procedure() begin
    showMessage('!');
  end
);



Делаю так:

Код: pascal
1.
2.
TProc = procedure;
procedure proc(paramProc: TProc);



Ошибка: Incompatible types: 'TProc' and 'Procedure'.

Если ставлю "TProc = procedure;", то ошибка такая: "Incompatible types: 'method pointer and regular procedure'". Однако, такой код работает:

Код: pascal
1.
2.
3.
4.
5.
TThread.queue(nil,
  procedure() begin
    showMessage('!');
  end
);



А процедура там объявлена так же:

Код: pascal
1.
TThreadMethod = procedure of object;
...
Рейтинг: 0 / 0
Как правильно передавать процедуру в качестве параметра?
    #39793556
amadeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опечатка:

авторЕсли ставлю "TProc = procedure;"

procedure of object;
...
Рейтинг: 0 / 0
Как правильно передавать процедуру в качестве параметра?
    #39793648
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amadeus
Код: pascal
1.
2.
3.
4.
5.
proc(
  procedure() begin
    showMessage('!');
  end
);



это называется анонимная процедура, соответсвенно типа - reference to procedure
...
Рейтинг: 0 / 0
Как правильно передавать процедуру в качестве параметра?
    #39793649
amadeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался.

Код: pascal
1.
TProc = reference to procedure;



Так работает.
...
Рейтинг: 0 / 0
Как правильно передавать процедуру в качестве параметра?
    #39793650
amadeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch , спасибо.
...
Рейтинг: 0 / 0
Как правильно передавать процедуру в качестве параметра?
    #39793652
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amadeusА процедура там объявлена так же:

ЕМНИП есть четыре разных "TThread.queue" - и у всех разные наборы параметров
...
Рейтинг: 0 / 0
Как правильно передавать процедуру в качестве параметра?
    #39793654
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amadeusА процедура там объявлена так же:
Код: pascal
1.
TThreadMethod = procedure of object;

Обманывать не хорошо
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
  TThreadMethod = procedure of object;
  TThreadProcedure = reference to procedure;

  TThread = class
    .........
    class procedure Queue(AThread: TThread; AMethod: TThreadMethod); overload; static;
    class procedure Queue(AThread: TThread; AThreadProc: TThreadProcedure); overload; static;
   ...........
  end;
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно передавать процедуру в качестве параметра?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]