Zum Inhalt springen

fehler beim zugreifen auf objekte einer klasse


Empfohlene Beiträge

Geschrieben

Hallo,

ich schreibe einen organizer mit vs c++ und habe für die daten eine klasse erstellt:

ref class kontakt

{

public:

String^ Name;

Int32 tag;

Int32 jahr;

String^str;

Int32 nr;

Int32 p;

String^ort;

String^fest;

String^h;

};

die instanz habe ich als objekt der form1 klasse deklariert:

~Form1()

{

if (components)

{

delete components;

}

}

private: System::Windows::Forms::ListBox^ listBox1;

private: System::Windows::Forms::Label^ name;

private: System::Windows::Forms::Label^ bday;

private: System::Windows::Forms::Label^ straße;

private: System::Windows::Forms::Label^ Nr;

private: System::Windows::Forms::Label^ plz;

private: System::Windows::Forms::Label^ Ort;

private: System::Windows::Forms::Label^ tel;

private: System::Windows::Forms::Label^ handy;

private: System::Windows::Forms::Panel^ panel1;

private: array<kontakt^>^test; //hier

...

und initialisiere sie wie alle andere objekte:

void InitializeComponent(void)

{

this->test=gcnew array<kontakt^>(300);

this->listBox1 = (gcnew System::Windows::Forms::ListBox());

...

nun lese ich die kontaktdaten ein :

try

{

fs= gcnew FileStream(dateiname,FileMode::Open);

sr= gcnew StreamReader(fs);

//Datei durchgehen

while(sr->Peek() !=-1)

{

zeile=sr->ReadLine();

daten=zeile->Split(zeichen);

test[loop]->Name=daten[0]; //FEHLER!!!!

test[loop]->tag=Convert::ToInt32(daten[1]);

test[loop]->jahr=Convert::ToInt32(daten[2]);

test[loop]->str=daten[3];

test[loop]->nr=Convert::ToInt32(daten[4]);

test[loop]->p=Convert::ToInt32(daten[5]);

test[loop]->ort=daten[6];

test[loop]->fest=daten[7];

test[loop]->h=daten[8];

listBox1->Items->Add(daten[0]);

++loop;

}

...

sobald die instanz ins spiel kommt gibt mir meine catch exeption folgenden fehler:

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt

außerdem: "System.NullReferenceException"

ich hoffe ihr könnt mir weiter helfen

lg valle

Geschrieben

this->test=gcnew array<kontakt^>(300);

Hiermit hast du zwar ein Array von 300 Kontakt-Handles, aber noch kein einziges Kontakt-Objekt. Die Handles sind alle null. Bevor du auf die Objekte zugreifst, musst du sie erzeugen.
Geschrieben

hm.. ich hab jetzt noch einen konstruktor

hinzugefügt.

ref class kontakt

{

public:

String^ Name;

Int32 tag;

Int32 jahr;

String^str;

Int32 nr;

Int32 p;

String^ort;

String^fest;

String^h;

kontakt();

};

kontakt::kontakt()

{

Name="";

tag=0;

jahr=0;

str="";

nr=0;

p=0;

ort="";

fest="";

h="";

}

gibt immer noch die gleiche fehlermeldung aber das meintest du nicht oder?

Geschrieben
ja wenn ich:

this->test=gcnew kontakt;

schreibe funktioniert auch alles aber wie mach ich dann einen array?

Wenn du ein kontakt^ hast, machst du das einmal.

Und wenn du ein Array von 300 kontakt^ hast, machst du das eben dreihundertmal. In der Schleife würde sich anbieten.

Bisher hast du nur ein Array von 300 Null-Referenzen. test[loop] ist Null, weil du nirgends auch nur eine einzige Referenz in dem Array auf ein tatsächliches Objekt verweisen lässt.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...