dyn. Arrays in FormCreate erzeugen und während Laufzeit ändern
-
Hallo Leute,
ich möchte gerne dyn, Arrays in FormCreate erzeugen und während Laufzeit
in anderen Methoden ändern können.
Ich habe das bisher so:void __fastcall TForm1::FormCreate(TObject *Sender) { TIniFile *IniFile = new TIniFile("c:\\start.ini"); const int v1=StrToInt(IniFile->ReadString("SECTION1","VALUE1"," ")); const int v2=StrToInt(IniFile->ReadString("SECTION1","VALUE2"," ")); int *array1 = new int[v1]; int *array2 = new int[v2]; delte IniFile; }Das Problem ist jetzt, v1 und v2 sin immer 0, egal was in der Ini steht.
Oder bin ich hier ganz auf dem Holzweg mit dem Code?Gruß Andy
-
Hallo
- Niemals OnCreate oder OnDestroy benutzen. Dafür gibt es den Konstruktor/Destruktor des Forms
- Es gibt auch ReadInteger
- Dein Code ist syntaktisch richtig (bis auf das delete). Es kann also sein das die Ini-Datei nicht gefunden wird oder nicht korrekt ist, wenn du sie manuell erstellst
- verwende statt der rohen Arrays mit new lieber std::vectorbis bald
akari
-
Desweiteren kann man diese Arrays außerhalb von OnCreate nicht nutzen. Sie sollten schon Member deiner Form sein.
-
Mal ne kleine Frage nebenbei..
Was ist denn der Unterschied zwischen OnCreate und dem Konstruktor? Warum sollte ich eher den Konstruktor für Deklarationen nehmen?
-
Hallo
Wurde schon oft hier besprochen. Such nach *OnCreate*.
bis bald
akari
-
Danke erst mal für die Antworten.
Aber eine Lösung für mein Vorhaben habe ich jetzt nicht.Ich brauche 2 arrays deren Größe aus einer ini stammt und die während der gesamten Laufzeit in zur Verfügung stehen. Die Größe wird nur beim Öffnen des Form gesetzt, daher hatte ich an onCreate gedacht.
Wie gehe ich jetzt korrekt vor?Danke
-
Hallo
Es wurden doch schon alle Stichworte genannt.
- Array nicht lokal deklarieren, sondern als Member der Formklasse
- Anstelle des rohen Arrays lieber std::vector benutzen (siehe Magazin hier im Forum, Artikel "STL-Container"
- Im Konstruktor Ini einlesen und Größe des Arrays setzenbis bald
akari
-
Das array hatte ich als private in der Formklasse dekariert, dann konnte ich es aber nicht initialisieren.
Mit std::vector kann ich leider noch nicht umgehen, aber ich lese mich jetzt mal ein und versuche Deine Tips umzusetzen.
-
Hallo
Das array hatte ich als private in der Formklasse dekariert, dann konnte ich es aber nicht initialisieren.
Initialisiert wird es im Konstruktor.
Und wenn du wirklich ein rohes Array willst denk dran es mit dem Destruktor auch wieder zu löschen.bis bald
akari