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!