blob: 897b3d30e487297b1dc9f5dff0b37c3da5b50733 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
{ Old file: tbs0188.pp }
{ can't print function result of procedural var that returns a function. Not a bugs : wrong syntax !! See source (PM) }
{ this are no bugs, just wrong
understanding of FPC syntax }
type testfunc = function:longint;
var f : testfunc;
var test: testfunc;
function test_temp: longint;
begin
test_temp:=12;
end;
procedure sound(test: testfunc);
begin
{writeln(test); this is wrong because
test is the function itself and write does not know how to
output a function !
to call test you must use test() !! }
writeln(test());
end; { proc. sound }
var i : longint;
begin
i:=test_temp;
f:=@test_temp;
if f()<>i then
begin
Writeln('error calling f');
Halt(1);
end;
{ this works for FPC
sound(test_temp);
but the correct syntax would be }
sound(@test_temp);
{ imagine if a function would return its own type !! }
{ for f var this is correct also ! }
sound(f);
end.
|