Anzahl von RichEdits bestimmen



  • Hallo,
    ich habe ein kleines Problem. Ich erstelle dynamisch RichEdit in einer for Schleife.

    for (int i = 0; i < pRich.Length; i++)
     {
         pRich[i] = new TRichEdit(this);
     }
    

    Später lösche ich diese RichEdits in einer weiteren for Schleife mit delete(i).

    Auf einen Buttondruck erstelle ich wieder neue Riche edits, diesmal eine andere Anzahl. Aber wenn ich nun die Anzahl mit .Length abfrage dann liefert mir es die Anzahl der ersten Richedits und nicht die aktuelle.
    Woran liegt das?



  • Nimm doch anstatt eines Arrays lieber die TObjectList ....



  • Wie genau mach ich das denn? Ich habe nich nicht damit gearbeitet. Kann man da auch auf die einzelnen Elemente zugreifen?



  • Das Erste was du tun solltest wenn du den ersten Kontakt mit einer unbekannten KLassehast ist wohl TObjectList in den Quelltexteditor zu tippen, F1 zu drücken und dir mal einen Überblick zu verschaffen, was alles an Methoden, Ereignissen, Eigenschaften, etc. vorhanden wäre.
    Meinst du nicht?

    -junix



  • Original erstellt von Heavenfighter:
    Aber wenn ich nun die Anzahl mit .Length abfrage dann liefert mir es die Anzahl der ersten Richedits und nicht die aktuelle.

    Length liefert dir genau den Wert, auf den du es zuvor gesetzt hast. Nur weil du die Instanzen der RichEdits gelöscht hast heisst das nicht, dass sich auch die Grösse des Arrays geändert hat.



  • @junix:
    Ich habs jetzt mal mit so einer Liste versucht:

    TObjectList *meineListe = new TObjectList(this);
    
            for(int i=0; i<CheckListBox1->Items->Count; i++)
            {
                    TRichEdit *myrich = new TRichEdit(Application);
                    meineListe->Add(myrich);
                    delete(myrich);
    
            }
    
             for(int i=0; i < meineListe->Count; i++)
             {
                    TRichEdit *pRich = (TRichEdit*) meineListe->Items[i];
                    pRich->Parent = ScrollBox1;
    
                    if( i != 0)
                    {
                            pRich->Top += 92;
                    }
                    pRich->Width = 197;
                    delete(pRich);
             }
    

    Leider bekomm ich bei der zweiten For Schleife eine Zugriffsverletzung an der Adresse 00000000. Woran liegt das, was mach ich falsch?

    @Jansen:
    Ok, das leuchtet mir jetzt ein. Wie frage ich denn dann die Anzahl der Instanzen ab?



  • Was gibt's da abzufragen? Du hast die Instanzen doch selbst erstell, also solltest du auch wissen, wieviele.

    Und das mit der Zugriffsverletzung ist doch logisch, da du in der ersten Schleife die RichEdits unmittelbar nach dem Erstellen wieder löschst. Du hast dann zwar eine Liste voller Zeiger, die zeigen aber alle in's Leere. 🙂


Anmelden zum Antworten