Code: Select all
MODULE Test;
TYPE
Obj = POINTER TO RECORD END;
PROCEDURE Fun (): ANYPTR;
VAR obj: Obj;
BEGIN
NEW(obj);
RETURN obj
END Fun;
PROCEDURE Proc (VAR p: Obj);
BEGIN
p := NIL
END Proc;
PROCEDURE Do*;
BEGIN
Proc(Fun()(Obj))
END Do;
END Test.
(!)Test.Do
Code: Select all
MODULE Test;
TYPE
Obj = POINTER TO RECORD END;
PROCEDURE Fun (): [b]Obj;[/b]
VAR obj: Obj;
BEGIN
NEW(obj);
RETURN obj
END Fun;
PROCEDURE Proc (VAR p: Obj);
BEGIN
p := NIL
END Proc;
PROCEDURE Do*;
BEGIN
Proc(Fun()(Obj))
END Do;
END Test.
(!)Test.Do
Code: Select all
MODULE Test;
IMPORT SYSTEM;
TYPE
Obj = POINTER TO RECORD END;
PROCEDURE Fun(): SYSTEM.PTR;
VAR obj: Obj;
BEGIN
NEW(obj); RETURN obj;
END Fun;
PROCEDURE Proc(VAR p: Obj);
BEGIN
p := NIL;
END Proc;
PROCEDURE Do* ();
BEGIN
Proc(Fun()(Obj));
END Do;
END Test.
luowy