![]() |
Re: TStringList - Zugriffsverletzung beim erstellen
Moin Stift,
probiers's doch mal so: (Ich hoffe, die Kommentare helfen Dir weiter)
Delphi-Quellcode:
type
// Wenn man von TObject ableitet ist es zwar nicht erforderlich das direkt mit anzugeben, // ich empfinde es aber als angenehmer die Basisklasse immer explizit anzugeben // TTest, da ein neuer Typ immer mit grossem T anfangen sollte TTest = class(TObject) // Interne Felder als private deklarieren, da sie nicht ausserhalb der Unit in der die // Klasse deklariert wurde sichtbar sein sollten (eben intern) // Diese sollten immer mit einem grossen F beginnen private FAll : TStringList; FMale : TStringList; FFemale : TStringList; // Was von aussen zugänglich sein soll, mit der Sichtbarkeit public versehen, damit // sie überall zugänglich sind, wo die Klasse instanziert wird. public // Der Konstruktor sollte auch immer so benannt werden, auch wenn es sich // eigentlich um eine Funktion handelt. constructor Create; // Da im Konstruktor Resourcen belegt werden müssen diese auch wieder freigegeben werden, // deshalb wird ein Destruktor benötigt destructor Destroy; override; // Die internen Felder nur als Eigenschaften zugänglich machen // Wenn es sich um Objekte handelt, die von der Klasse selber verwaltet werden, wie in // diesem Falle sollte man keinesfalls Schreibzugriff ermöglichen, deshalb kein write. property All : TStringList read FAll; property Male : TStringList read FMale; property Female : TStringList read FFemale; end; implementation constructor TTest.Create; begin // inherited ist bei der Ableitung von TObject zwar nicht notwendig, würde ich aber // sicherheitshalber auch hier mit angeben, falls der Constructor von TObject mal // mit Inhalt gefüllt wird. inherited; FAll := TStringList.Create; FMale := TStringList.Create; FFemale := TStringList.Create; end; destructor TTest.Destroy; begin // Auf das ansonsten meist zu empfehlende FreeAndNil kann man hier verzichten, da // die internen Felder nach Abarbeitung des Destruktors in keinem Falle mehr // angesprochen werden. FAll.Free; FMale.Free; FFemale.Free; // Für das inherited bei Destruktor gilt hier das gleiche wie beim Konstruktor inherited; end; |
Re: TStringList - Zugriffsverletzung beim erstellen
Wow, bin überwältigt.
Danke für die ausführliche Antwort!, habe ne Menge gelernt !! :) ~stift |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz