<<valle>> Geschrieben 10. September 2009 Geschrieben 10. September 2009 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 Zitieren
Klotzkopp Geschrieben 10. September 2009 Geschrieben 10. September 2009 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. Zitieren
<<valle>> Geschrieben 10. September 2009 Autor Geschrieben 10. September 2009 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? Zitieren
Klotzkopp Geschrieben 10. September 2009 Geschrieben 10. September 2009 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 Zitieren
<<valle>> Geschrieben 10. September 2009 Autor Geschrieben 10. September 2009 ja wenn ich: this->test=gcnew kontakt; schreibe funktioniert auch alles aber wie mach ich dann einen array? Zitieren
Klotzkopp Geschrieben 10. September 2009 Geschrieben 10. September 2009 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. Zitieren
<<valle>> Geschrieben 10. September 2009 Autor Geschrieben 10. September 2009 jetzt hab ichs verstanden thx valle Zitieren
Empfohlene Beiträge
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.