Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 26.01.2011
Сообщений: 3
1

Процедурные типы

26.01.2011, 11:21. Показов 1302. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Возник вопрос:

Завели процедуру Process в классе:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 TForm1 = class(TForm)
    .....
        Procedure Process( A: Integer; t: TDateTime; const I: TInfo ); stdcall;
    .....
 end;
implementation
 
{$R *.dfm}
 
procedure TForm1.Process(A: Integer; T: TDateTime;
  const I: TInfo);
begin
  .......
end;
Есть тип:
Delphi
1
  TNum = Procedure( A: Integer; T: TDateTime; const I: TInfo ); stdcall;
и переменная этого типа
Delphi
1
  var All: TNum;
В обработчике кнопки компилятор ругается на :
Delphi
1
All  := process;
Ошибка:
Incompatible types: regular procedure and method pointer

Где исправить, чтобы корректно компилировался код?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2011, 11:21
Ответы с готовыми решениями:

Процедурные типы
Разработать программу вычисления таблицы значений интеграла (приложение 2) с заданной точностью Е...

Процедурные типы данных
Для чего они нужны если есть обычные процедуры и функции???

Процедурные превратности
Подскажите пожалуйста, как сделать чтобы процедура возвращала в основную программу значение...

Пользовательские типы (перечислимые типы)
Дан временной период (число, месяц, год начала - число, месяц, год конца), год своего рождения и...

7
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
26.01.2011, 11:23 2
Цитата Сообщение от BES' Посмотреть сообщение
AllTranz := proc;
А объявлены all и process? И попробуй в этой строчке явно взять указатель:
Delphi
1
 all:=&process;
.
0
0 / 0 / 0
Регистрация: 26.01.2011
Сообщений: 3
26.01.2011, 11:46  [ТС] 3
All объявлена как глобальная переменная, а процедура
описана в implementation

All :=&process; - не работает
Выдает ошибку:
Illegal character in input file
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
26.01.2011, 12:07 4
Ну так если глобально, то с этого и надо было начинать.
Delphi
1
all:=@form1.precess;
. В делфях вроде работало без @, но, например, в лазарусе через @.
1
0 / 0 / 0
Регистрация: 26.01.2011
Сообщений: 3
26.01.2011, 12:30  [ТС] 5
спасибо, работает))
мы по-другому сделали - вынесли процедуру process из класса и все ок!
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
26.01.2011, 12:33 6
А вот так ещё лучше.

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
Delphi
1
all:=@form1.precess;
Этого было бы мало. Если не выносить, то ещё в самом типе надо
Delphi
1
TNum = Procedure(Form:TForm1^; A: Integer; T: TDateTime; const I: TInfo ); stdcall;
. Лучше действительно вынести.
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
26.01.2011, 16:11 7
Цитата Сообщение от taras atavin Посмотреть сообщение
Этого было бы мало. Если не выносить, то ещё в самом типе надо
Delphi
1
TNum = Procedure(Form:TForm1^; A: Integer; T: TDateTime; const I: TInfo ); stdcall;
Либо так:
Delphi
1
TNum = Procedure(A: Integer; T: TDateTime; const I: TInfo ) of object; stdcall;
---
И TForm1^ - здесь надо просто TForm1, а лучше TObject.
Delphi
1
TNum = Procedure(Sender : TObject; ...
0
47 / 47 / 2
Регистрация: 21.01.2011
Сообщений: 151
26.01.2011, 19:06 8
Мат-часть.

---
Mawrat: Спасибо, полезная статья.
1
26.01.2011, 19:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2011, 19:06
Помогаю со студенческими работами здесь

Процедурные типы
Здравствуйте, пожалуйста помогите понять в чем ошибка, заранее спасибо, буду благодарен любой...

Процедурные типы
Здравствуйте, помогите решить задание {E}_{8}({H}_{7}(x)){L}_{1}(y)+{L}_{7}(z) при х=0.5 y=0.3...

Процедурные типы
Здравствуйте, помогите разобраться, заранее спасибо E_8(H_7(x))L_1(y)+L_7(z) при х=0.5 y=0.3...

ПРОЦЕДУРНЫЕ ТИПЫ
Описать процедуру (функцию), определяющую пересекаются ли графики функций, в заданной точке.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru