Veröffentlicht 10. September 200915 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 200915 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 200915 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 200915 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 200915 j ja wenn ich: this->test=gcnew kontakt; schreibe funktioniert auch alles aber wie mach ich dann einen array?
10. September 200915 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.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.