Zitat von
stiftII:
Hallo zusammen.
Ich experimentiere gerade mit eigenen Klassen. Jetzt hab ich ein Problem
Ich habe folgende Klasse erstellt:
Delphi-Quellcode:
test = class
All : TStrings;
Male : TStringList;
Female : TStringList;
procedure Create;
end;
Beim aufrufen von test.create, wird eine Zugriffsverletzung erzeugt.
Wie kann ich das vermeiden, und warum ist das so ?
test ist eine Klasse. Um eine Instanz von ihr zu benutzen, muss man sie mit einem Konstruktor erzeugen.
Create ist hier aber kein Konstruktor, sondern nur eine Prozedur.
So sieht es mit einem Konstruktor aus:
Delphi-Quellcode:
Test = class
All : TStrings;
Male : TStrings;
Female : TStrings;
constructor Create;
end;
constructor Test.Create;
begin
All := TStringList.Create; <-- hier TStringlist
Male := TStringList.Create; <-- hier TStringlist
Female := TStringList.Create; <-- hier TStringlist
end;
Tipp: wenn die Instanz nicht mehr benötigt und mit Free freigegeben wird, sollte auch der Speicher der für die TStrings belegt wird, über einen Destruktor freigegeben werden. Sonst entstehen Speicherlecks, die sich leicht zu Problemen anhäufen können.
Delphi-Quellcode:
Test = class
All : TStrings;
Male : TStrings;
Female : TStrings;
constructor Create;
destructor Destroy; override;
end;
Viele Grüße,