cli::array Problem



  • Hallo,

    ich hab eine mdi anwendung, in der child-fenster geöffnet werden. diese child-fenster (besser gesagt deren namen) will ich in einen array schreiben, immer wenn ein neues child geöffnet wird.

    // Arraydefinition
    private: array<System::String ^> ^childs;
    
    // ... weiterer code
    
    // beim öffnen eines neuen childs, einen eintrag in den array schreiben
     private: Void NewDocument()
                 {               
                     //... weiterer code
    
                     // hier wird der eintrag gemacht
                     this->childs->SetValue(/*doc ist die variable vom childframe*/doc->Text, (this->childs->Length + 1));
                 }
    

    kompellieren klappt, nur erzeugt der code eine ausnahme vom type "NullReferenceException: Object reference not set to an instance of an object.". kann mir jemand helfen? ich benutze vs2005.



  • Du musst auch zuerst mal das Array anlegen...
    AUch ist ein <array> etwas ungeschickt, da dies eine vordefinierte Größe hat, die beim anlegen bekannt sein muss...
    Ich pers. würde entweder eine StringCollection oder List<String^> verwenden...



  • ich weiß, bei c++ ist das mit vordefinierten arrays so eine sache, aber an eine "liste" habe ich noch garnicht gedacht. kannst du mir vielleicht ein kleines beispiel zur demonstartion einer stringcollection oder list posten.



  • using namespace System;
    
    int main(array<String ^> ^args)
    {
    	Collections::Specialized::StringCollection ^col = gcnew Collections::Specialized::StringCollection();
    	col->Add("Hallo");
    	col->Add("Welt");
    	for each (String ^str in col) {
    		Console::WriteLine(str);
    	}
        return 0;
    }
    


  • das ist ja viel besser als ein array, vorallem wenn man nicht weiß was noch kommt. herzlichen dank!


Anmelden zum Antworten