Процедурный тип для "function" без параметров не компилирует

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Процедурный тип для "function" без параметров не компилирует

Сообщение Programmer » 22.01.2014 21:50:36

Здравствуйте!

Столкнулся с проблемой. При использовании переменной процедурного типа для функции без параметров, компилятор не позволяет производить присвоение такой переменной локально переменной соответствующего типа. А с параметром пропускает. Знает ли кто эту проблему?

Код, генерящий ошибку:

Код: Выделить всё
program project1;

{$mode objfpc}{$H+}

type
     TestFuncType = function : byte;
var
     TestFunc : TestFuncType = nil;
     B: byte;

function Test: byte;
begin
  result:=1
end;

begin
  TestFunc:=@test;
  B:=TestFunc;              // <-- project1.pas(18,6) Error: Incompatible types: got "<procedure variable type of function:Byte;Register>" expected "Byte"
end.




А такой код работает:

Код: Выделить всё
program project1;

{$mode objfpc}{$H+}

type
     TestFuncType = function (q: boolean): byte;
var
     TestFunc : TestFuncType = nil;
     B: byte;

function Test (q: boolean)  : byte;
begin
  if q then result:=1
       else result:=0;
end;

begin
  TestFunc:=@test;
  B:=TestFunc(true);
end.

Programmer
незнакомец
 
Сообщения: 2
Зарегистрирован: 22.01.2014 21:25:45

Re: Процедурный тип для "function" без параметров не компили

Сообщение zub » 22.01.2014 23:18:23

Код: Выделить всё
B:=TestFunc();
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: Процедурный тип для "function" без параметров не компили

Сообщение Programmer » 23.01.2014 10:50:07

Большое спасибо!
Programmer
незнакомец
 
Сообщения: 2
Зарегистрирован: 22.01.2014 21:25:45


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru