Konstantenausdruck erforderlich ???



  • Warum bekomme ich folgende Fehlermeldung bei anschließendem Code?

    [C++ Fehler] Unit1.cpp(52): E2313 Konstantenausdruck erforderlich

    unsigned int i = StrLen(Memo1->Lines->Text.c_str());
    char inhalt[i];
    


  • HardRock schrieb:

    Warum bekomme ich folgende Fehlermeldung bei anschließendem Code?

    [C++ Fehler] Unit1.cpp(52): E2313 Konstantenausdruck erforderlich

    unsigned int i = StrLen(Memo1->Lines->Text.c_str());
    char inhalt[i];
    

    Bei der Definition eines Arrays muß die Größe zur Kompilierzeit bekannt sein. (in C++ zumindest).

    Wenn du in deinem Fall die Größe des Arrays erst zur Laufzeit weißt, dann mußt du es auf dem Heap erstellen:

    char* inhalt = new char[i];
    ...
    delete [] inhalt; // nicht vergessen, sonst hast du ein Speicherleck!
    

    Eine andere Möglichkeit wäre die Verwendung von std::vector (der im Prinzip das gleiche tut, wobei du dich allerdings nicht um das Löschen nachher kümmern mußt):

    #include <vector>
    ...
    std::vector <char> inhalt;
    inhalt.reserve (i);
    

    Btw: Das hier

    StrLen(Memo1->Lines->Text.c_str());
    

    kann recht ineffizient sein; verwende besser

    Memo1->Lines->Text.Length ();
    

    .

    Moritz



  • Vielen vielen Dank! 👍


Log in to reply