Ich würde die Klasse wie folgt aufbauen:
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:
| type TListen = class(TObject) protected fListe1: TStringList; fListe2: TStringList; fListe3: TStringList; public constructor Create; destructor destructor; override; property Liste1: TStringList read fListe1; property Liste2: TStringList read fListe2; property Liste3: TStringList read fListe3; end;
constructor TListen.Create; begin inherited Create;
fListe1 := TStringList.Create; fListe2 := TStringList.Create; fListe3 := TStringList.Create; end;
destructor TListen.Destroy; begin FreeAndNil(fListe1); FreeAndNil(fListe2); FreeAndNil(fListe3);
inherited Destroy; end; |
Ein paar Bermerkungen:
Destructor Free sollte nicht überschrieben werden, da Free intern Destroy aufruft. Das override hinter dem Destroy; ist notwendig, da sonst dein Destructor niemals aufgerufen wird, wenn das Objekt freigegeben wird.
Objekte sollten, wenn vorhanden, mit FreeAndNil(Objekt) freigegeben werden. Mit dieser Funktion wird das Objekt aus dem Speicher entfernt und gleichzeit die übergebene Variable auf NIL gesetzt. Dadurch kann schnell festgestellt werden, ob das Objekt noch gültig ist.
Die Variablen wurden in den Protected - Abschnitt verschoben, um einen direkt Zugriff zu verhinden. Über die Properties kann ich einen Schreibzugriff verhindern und damit ein potentielle Gefahrenquelle vermeinden.
Wenn Methoden überschrieben werden, hier Create und Destroy, wird in den meisten Fällen die Vorgängermethode mit inherited aufgerufen, da diese Daten für das Objekt reservieren oder freigeben. Machst Du das nicht, können fehlerhaft initializierte Objekt enstehen.
So, das wars von meiner Seite.
Gruß
KidPaddle