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

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

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

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

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

Сообщение Programmer »

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

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

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

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

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

Сообщение Programmer »

Большое спасибо!
Ответить