Hi!
Was mache ich falsch? Ich habe eine Klasse geschrieben, deren Zeiger (von den Objekten) ich in einer TList speichern möchte. Aber beim Hinzufügen erhalte ich eine "Zugriffverletzung bei Adresse XXXX im Modul VCL50.BPL beim Lesen von XXXX".
Hier die Klasse eren Instanzen gespeichert werden sollen:
--------------------------------------------------------------
class CStudent : protected CAnschrift
{
protected:
long int mLI_Nr;
long int mLI_MatrNr;
long int mLI_PersNr;
AnsiString mAS_Name;
TStringList* Vornamen; // Liste mit Vornamen, Achtung Typ muss TString sein! (Statt AnsiString)
TList* Anschriften;
public:
CStudent();
~CStudent();
// Student
void AddNr(const long int &liTemp);
void AddMatrNr (const long int &liTemp);
void AddName(const AnsiString &asTemp);
void AddPersNr(const long int &liTemp);
long int GetNr() const;
long int GetMatrNr() const;
AnsiString GetName() const;
long int GetPersNr() const;
// Vorname
void AddVorname (const AnsiString &asTemp);
int VornameCount(); // Gibt die Anzahl der vorhandenen Vornamen an
AnsiString GetVorname(int i) const; // Gibt einen Vornamen, zugriff über index i, 0 = erster Name
void DeleteVorname(int i) const;
// Anschrift
void AddAnschrift(const long int &iTempNr, const AnsiString &asTempOrt, const AnsiString &asTempStrasse, const int &iTempHausNr, const int &iTempPLZ);
int GetCountAnschriften() const;
AnsiString GetOrt(int i) const;
AnsiString GetStrasse(int i) const;
int Get_HausNr(int i) const;
int Get_PLZ(int i) const;
void DeleteAdresse(int i);
};
----------------------------------------------------------
und hier ein Auszug der Klasse die speichern soll
Konstrucktor:
try
{
TList* pListStudenten = new TList();
pListStudenten->Clear();
}
catch (TList&)
{
OutMSG("TList Studenten konnte nicht angelegt werden",1);
}
--------------------
gespeichert soll dann so werden:
CStudent *pStudentTemp = new CStudent;
pListStudenten->Add(pStudentTemp);
--------------------------
Auch direktes Casten mit: pListStudenten->Add((void*)pStudentTemp); brachte keinen Erfolg.
Wäre toll, wenn mir jemand helfen könnte: [email protected].
Vielen Dank
MFG Christian
Was mache ich falsch? Ich habe eine Klasse geschrieben, deren Zeiger (von den Objekten) ich in einer TList speichern möchte. Aber beim Hinzufügen erhalte ich eine "Zugriffverletzung bei Adresse XXXX im Modul VCL50.BPL beim Lesen von XXXX".
Hier die Klasse eren Instanzen gespeichert werden sollen:
--------------------------------------------------------------
class CStudent : protected CAnschrift
{
protected:
long int mLI_Nr;
long int mLI_MatrNr;
long int mLI_PersNr;
AnsiString mAS_Name;
TStringList* Vornamen; // Liste mit Vornamen, Achtung Typ muss TString sein! (Statt AnsiString)
TList* Anschriften;
public:
CStudent();
~CStudent();
// Student
void AddNr(const long int &liTemp);
void AddMatrNr (const long int &liTemp);
void AddName(const AnsiString &asTemp);
void AddPersNr(const long int &liTemp);
long int GetNr() const;
long int GetMatrNr() const;
AnsiString GetName() const;
long int GetPersNr() const;
// Vorname
void AddVorname (const AnsiString &asTemp);
int VornameCount(); // Gibt die Anzahl der vorhandenen Vornamen an
AnsiString GetVorname(int i) const; // Gibt einen Vornamen, zugriff über index i, 0 = erster Name
void DeleteVorname(int i) const;
// Anschrift
void AddAnschrift(const long int &iTempNr, const AnsiString &asTempOrt, const AnsiString &asTempStrasse, const int &iTempHausNr, const int &iTempPLZ);
int GetCountAnschriften() const;
AnsiString GetOrt(int i) const;
AnsiString GetStrasse(int i) const;
int Get_HausNr(int i) const;
int Get_PLZ(int i) const;
void DeleteAdresse(int i);
};
----------------------------------------------------------
und hier ein Auszug der Klasse die speichern soll
Konstrucktor:
try
{
TList* pListStudenten = new TList();
pListStudenten->Clear();
}
catch (TList&)
{
OutMSG("TList Studenten konnte nicht angelegt werden",1);
}
--------------------
gespeichert soll dann so werden:
CStudent *pStudentTemp = new CStudent;
pListStudenten->Add(pStudentTemp);
--------------------------
Auch direktes Casten mit: pListStudenten->Add((void*)pStudentTemp); brachte keinen Erfolg.
Wäre toll, wenn mir jemand helfen könnte: [email protected].
Vielen Dank
MFG Christian
Comment