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.
