TStringList *test; test->Clear( ); ... Zugriffsverletzung!?



  • Ich habe ganz einfach folgendes gecodet:

    TStringList *extList;

    jetzt will ich mittels Clear() oder Add() entweder die TStringList löschen oder erweitern, doch immer wieder kommen bei beiden Zugriffsverletzungen auf. WARUM?



  • Hi,

    weil du das Objekt erst erstellen musst.

    TStringList *extList; // ist nur eine Deklaration.
    

    Damit deklarierst du einen Pointer. Das Objekt wird aber noch nicht erstellt.
    Erst wenn du das Objekt mit new erzeugst wird der Konstruktor des Objektes aufgerufen ud das Objekt erstellt.

    Beispiel:

    TStringList *extList; // ist nur eine Deklaration. 
    extList=new TStringList(); // objekt erzeugen
    // nun kann man daruf zugreifen
    extList->Add("lkhLK");
    

    bedenke bitte, dass du jeden Speicherbereich, den du mit new belegst auch wieder mit delete wieder freigibst.

    Beispiel:

    delete extList;
    

Anmelden zum Antworten