Mehrere (gleiche) Formen
-
Hatte ich ja gamcht, ging nicht!
Hab jetzt aber ne Lösung gefunden:
---TStringList *liste = new TStringList(); for (int i=0;i<meincount;i++) { TTestForm *TestForm = new TTestForm(Application); TestForm->WarnLabel->Caption = liste->Strings[i]; TestForm->Show(); }
-
Das enzige, was du mit dem Code erreichst ist ein Memory-Leak.
-
Mal ein konkreter Lösungsvorschlag:
- Vor der schleife ein array von TTestForm der größe meincount erstellen
- In der schleife array[i] = new TTestForm(Application)
- Später wieder löschen
-
Ok, ich probierst mal, dank dir!
PS: Wie erstellte man noch arrays? *g*
[ Dieser Beitrag wurde am 28.04.2003 um 16:42 Uhr von Tillmann David editiert. ]
-
Ich hab da mal folgenden FAQ Beitrag gefunden: Komponenten benutzen - zur Laufzeit erstellen, anzeigen und Events zuweisen
das
const int x = 10;
TTestForm *Test[x];funktioniert bei mir nicht. Er schmeißt mir folgenden fehler raus:
Constant expression requiredDas heisst ja, das ich wissen muss, wie groß die Arrayzahl ist!
[EDIT] DUDEN
[/EDIT]
Sorry hab aber noch nie in bcb mit array gearbeitet nur in php.
[ Dieser Beitrag wurde am 28.04.2003 um 17:02 Uhr von Tillmann David editiert. ]
-
Sollte eigentlich funktionieren - bei mir (BCB6) tuts das auch.
Welchen BCB haste denn? Haste alle Updates drauf?
-
Ja, habe den bcb 5 pro und einmal ein update gemacht.
Ist es schlimm, wenn ich meine oben geschilderte Methode nehme, oder würdest du davon abraten?
-
PS: Das hier geht doch:
const int x = 10; TTestForm *Test[x];
aber ich bin davon ausgegangen, das ich den Wert berechne:
const int x = meincount-list->Count; TTestForm *Test[x];
Da gibt er mir den fehler raus.
-
Du kannst einer konstanten Variable zur Laufzeit nunmal nichts zuweisen.
-
Ach so, da liegt der Hund begraben...
Versuchs mal mit DynamicArray oder std::vector.
Von deiner ersten Lösung würde ich insofern abraten, dass du 1. ein Memory-Leak kriegst (kein delete!) und alle Forms denselben Namen haben.
Da ist das Verhalten AFAIK nicht definiert.