program procedural_type; {$mode objfpc}{$H+} // Interface for an event handler // This is a 'procedural type' type TOneStringParamProc = procedure(aString: string); var stringProc: TOneStringParamProc = nil; // A possible implementation procedure ShowStr(s: string); begin WriteLn('The string passed to this procedure is ', s); end; begin // Use the event handler stringProc := @ShowStr; stringProc('"string parameter"'); {$IFDEF WINDOWS} ReadLn; {$ENDIF} end.