10. September 200916 j 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
10. September 200916 j 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.
10. September 200916 j 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?
10. September 200916 j Nein, das meinte ich nicht. Du musst Objekte der Klasse kontakt erzeugen. Das tust du bisher nicht. Von "gcnew kontakt" ist weit und breit nichts zu sehen
10. September 200916 j ja wenn ich: this->test=gcnew kontakt; schreibe funktioniert auch alles aber wie mach ich dann einen array?
10. September 200916 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.