Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#5

Re: TStringList - Zugriffsverletzung beim erstellen

  Alt 27. Nov 2009, 18:57
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,
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat