Edit: Naja, den Beitrag bearbeiten während ich meinen schreibe (kannst du zwar nicht wissen) ist nicht so klug, da meine Hinweise jetzt falsch verstanden werden könnten.
Also das was hier jetzt in deiner Haupt
Pas-Datei steht sieht schonmal soweit richtig aus. Das was noch fehlt, ist die Instanziierung des m_ControllerAdd Feldes. Um dies noch zu erledigen, solltest du dir einen EventHandler für das FormCreate und das FormDestroy Ereignis erstellen und dann folgendes noch eintragen. Bitte beachte auch noch den Hinweis von nuclearping und benenne deine Klassen noch um und stelle ein
T vor den Namen. Typen werden in Delphi laut Konvention immer mit einem T gekennzeichnet. Also sollte aus deiner CalcController Klasse ein
TCalcController werden.
Delphi-Quellcode:
procedure TFrmCalculator.FormCreate(Sender: TObject);
begin
m_ControllerAdd := CalcController.Create;
end;
Delphi-Quellcode:
procedure TFrmCalculator.FormDestroy(Sender: TObject);
begin
m_ControllerAdd.Free;
end;
In deiner Controller.pas solltest du dir in der CalcController (später TCalcController) Klasse noch einen
constructor
und einen
destructor
im Public Abschnitt anlegen. Im Constructor solltest du folgendes reinschreiben:
Delphi-Quellcode:
constructor CalcController.Create;
begin
m_AddZahl := TBerechnung.Create;
end;
Im Destructor folgendes:
Delphi-Quellcode:
destructor CalcController.Destroy;
begin
m_AddZahl.Free;
end;
Aus deiner Notify Procedure kannst du dann die Erzeugung des Objektes wieder entfernen, da dies ja dann im Constructor schon gemacht wird.
Delphi-Quellcode:
procedure CalcController.Notify(p_Action: String; p_Param: String);
begin
if (p_Action = 'Zahl') then
begin
m_AddZahl := TBerechnung.Create; // <---- Das hier wieder entfernen, da im Constructor bereits erledigt
m_AddZahl.AddZahl(p_Param);
//m_AddZahl.Free;
end
else
if (p_Action = 'Ergebnis') then
begin
end;
end;
Wenn du das alles gemacht hast, dann sollte dein Programm eigentlich funktionieren.