Страница 1 из 1

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

СообщениеДобавлено: 22.01.2014 21:50:36
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.


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

СообщениеДобавлено: 22.01.2014 23:18:23
zub
Код: Выделить всё
B:=TestFunc();

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

СообщениеДобавлено: 23.01.2014 10:50:07
Programmer
Большое спасибо!