Hallo Leute,
Ich hab mal wieder ein Problem:
Ich möchte eine bessere Rechenmaschine bauen, die einene string ausrechenen kann.
Dazu brauche ich ein eigenes Objekt, dass die Methoden und Variablen verwaltet.
Das Objekt hat in vereinfachter Form drei Stringlisten vo TStrings. Im Konstruktor muss ich eine Instanz von ihnen erstellen. Da ist der Fehler: "EAbstractError", weil ich eine Abstracte Methode aufgerufen habe.
Wie kann ich diesen Fehler verhindern und endlich weiterprogrammieren?
Folgender Quelltext:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, UnitCasius;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1; Casius: TCasius;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin Casius := TCasius.Create; Casius.Free; end;
end. |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| unit UnitCasius;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type TCasius = class(TObject) FunktionenListe: TStrings; RechenzeichenListe: TStrings; KonstantenListe: TStrings;
constructor Create; destructor Free; end;
implementation
Constructor TCasius.Create; begin
FunktionenListe := TStrings.Create; RechenzeichenListe := TStrings.Create; KonstantenListe := TStrings.Create; end;
Destructor TCasius.Free; begin FunktionenListe.Free; RechenzeichenListe.Free; KonstantenListe.Free; end;
end. |
Der fehler tritt beim erstellen von den Listen auf also bei "FunktionenListe := Tstrings.Create;"
Ich wäre echt erleichtert wenn jemand mir die Frage beantworten kann.
Unten negativ getesteter Quelltext.
Moderiert von
Gausi: Beitragsformatierung überarbeitet.