Löschen nicht möglich



  • Hey,

    bekomme neuerdings immer die Fehlermeldung:

    "error C2262: 'abc': Löschen nicht möglich"

    Woran kann das liegen?

    Der Fehler tritt bei der Zeile:

    System::Array abc
    

    auf.

    Mach ich dort was falsch?
    Bzw. wie deklariere ich dann unter .NET Framework 1.1 solche Arrays oder auch Listen richtig?

    Danke schon mal.

    Gruß



  • System::Collections::ArrayList^ list = gcnew System::Collections::ArrayList();
    


  • Danke.

    Habe leider noch ein weiteres Problem, welches ich gerade nicht lösen kann.

    Habe jetzt wie folgt eine sortierte Liste deklariert:

    System::Collections::SortedList* lst = __gc new System::Collections::SortedList();
    

    Diese Deklaration funktioniert soweit auch, allerdings erhalte ich immer eine Fehlermeldung, sobald ich z.B.

    lst->Add("abc", 30);
    

    versuche umzusetzen. Ich möchte damit ja lediglich die Liste füllen.
    Die Fehlermeldung besagt, dass eine "Konvertierung des Parameters 1 von 'const char[5]' in 'System::Object __gc *' nicht möglich sei.

    Wo liegt da mein Fehler?

    Danke schon mal.

    LG



  • Du benutzt nicht C++/CLI, sondern der Vorgänger Managed C++.
    Nur als Hinweis: Managed C++ wird nicht mehr weiterentwickelt...
    Warum nicht gleich C++/CLI (oder noch besser C#)...

    Zum Problem:
    Probier doch mal so:

    lst->Add(__gc new System::Sting(L"abc"), 30);
    

    Simon



  • Ja, genau, ich würde wohl auch gerne C++/CLI oder C# nutzen,
    allerdings ist mein vorliegendes Projekt mit .NET 1.1/MFC
    geschrieben und da bleibt mir glaub ich nicht viel übrig
    als Managed C++ zu nutzen, oder?

    Bei deiner Methode erhalte ich leider eine Fehlermeldung:

    "Konvertierung des Parameters 2 von 'int' in 'System::Object __gc ' nicht möglich.
    Die Konvertierung eines integrierten bzw. eines
    Wertetyps in 'System::Object __gc
    ' erfordert 'boxing'."



  • Ja, dann dasselbe eben noch für den 2. Parameter...



  • lst->Add(__gc new System::String(L"abc"), __gc new System::Int32(30));
    

    So?



  • Weiss nicht... gehts denn?? 🙄



  • Ne, leider nicht.

    "Konvertierung des Parameters 2 von 'int *' in 'System::Object __gc *' nicht möglich.
    Ein nicht verwalteter Typ kann nicht in einen verwalteten Typ umgewandelt werden."

    und

    "'__gc new' kann nicht zum Erstellen eins nicht-gc-Typobjekts verwendet werden."



  • System::Collections::SortedList* myList = __gc new System::Collections::SortedList();
    System::String* myKey = __gc new System::String(L"myKey");
    System::Object* myValue = __box(30);
    myList->Add(myKey, myValue);
    

    Simon



  • Es scheint so zu funktionieren 😉
    Danke!


Anmelden zum Antworten