// Point 18: if the function is defined in the interface area, you do not need to use forward to declare unit unit1; interfaceuses windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, stdctrls; Type tform1 = Class (tform) button1: tbutton; Procedure button1click (Sender: tobject); end; var form1: tform1; {now the function is defined in the interface area} function myfuna (X: integer): integer; function myfunb (X: integer): integer; implementation {$ R *. DFM} function myfuna (X: integer): integer; begin result: = myfunb (x) * 3; {because of the Declaration in the interface area, the previous function can call the later function} end; function myfunb (X: integer): integer; begin result: = ABS (x); end; {call test} procedure tform1.button1click (Sender: tobject); var I: integer; begin I: = myfuna (-3); showmessage (inttostr (I); {9} end; end.