Q:  How do I write programs using function pointers?

A:

unit Unit1;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

procedure SayIt(s: string);
var
  Form1: TForm1;
  x: procedure(s: string);

implementation
{$R *.DFM}
procedure SayIt(s: string);
begin
  showMessage(s);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  x := SayIt;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  x(Edit1.text);
end;

end.