Tu teoría es cierta, las variables: a,b,c,d: real; son locales para el procedimiento Button1Click, lo que quiere decir que cada vez que invoques el evento comienzan con su valor por defecto.
Debes definir estas variables con un ámbito mayor, como por ejemplo en la forma:
Código Delphi
[-]
Form1 = class(TForm)
Private
Public
b,c,d: real;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var a: Real;
begin
a := strtoint(Edit1.text);
b := b + a;
c := c + 1;
d := b / c;
Edit1.Clear;
end;
Es buena idea inicializar las varibales en el vento OnCreate del formulario, o definir un boton3 para limpiar las variables y volver a calcular.
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
begin
b := 0;
c := 0;
end;