Automatische Nummerierung von Variablen



  • Hallo,

    ich möchte nur das eine Variable eine Zahl dahinter steht. Das mit der zahl sollte dann in eine Schleife geschehen. Weil ich brauche mehrere ComboBox'en
    wieviele hängt von Anwender ab.

    ein Beispiel

    for (int i=1;i <= 6;i++) ...
    
    dann sollte sowas raus kommen
    
    TComboBox *ComboBox1 = new TComboBox(GroupBox4);
    TComboBox *ComboBox2 = new TComboBox(GroupBox4);
    TComboBox *ComboBox3 = new TComboBox(GroupBox4);
    TComboBox *ComboBox4 = new TComboBox(GroupBox4);
    TComboBox *ComboBox5 = new TComboBox(GroupBox4);
    TComboBox *ComboBox6 = new TComboBox(GroupBox4);
    

    Ich hoffe das mir einer helfen kann.



  • Nimm ein Array.



  • Hatte ich auch schon Probiert, habe ich nicht hin bekommen 😞

    Keine Ahnung wie das geht.

    Vielleicht kann mir ja einer dabei helfen, wie das geht.



  • Rave173 schrieb:

    Hatte ich auch schon Probiert, habe ich nicht hin bekommen 😞
    Keine Ahnung wie das geht.

    Das geht genau gleich, wie z.B. bei int- oder char-Arrays.

    Array mit ComboBoxen erzeugen:

    #define MAX_COMBOBOXEN  10
    TComboBox *ComboBoxArray[MAX_COMBOBOXEN] = {NULL};
    int iAnzahlCB = 0;
    
    for (int i=1;i <= 6 && iAnzahlCB < MAX_COMBOBOXEN;i++) 
    {
      ComboBoxArray[iAnzahlCB] = new TComboBox(GroupBox4);
      ComboBoxArray[iAnzahlCB]->Left = ...
      ComboBoxArray[iAnzahlCB]->Top = ...
      ComboBoxArray[iAnzahlCB]->Items->Add(...
      ...
      ++iAnzahlCB;
    }
    

    ...und die weitere Verwendung:

    for (int i=0;i < iAnzahlCB;i++) 
    {
      ComboBoxArray[i]->Items->.....
    }
    

    ...oder:

    for (int i=0;i < MAX_COMBOBOXEN;i++) 
    {
      if(ComboBoxArray[i] == NULL)
        break;
      ComboBoxArray[i]->Items->.....
    }
    

    Wichtig:
    1. Array so groß wählen (MAX_COMBOBOXEN), dass die maximal zu erwartende Anzahl an ComboBoxen erstellt werden kann.
    2. Array mit NULL vorinitialisieren, damit erkannt werden kann, welcher Index einen gültigen Zeiger enthält.
    3. Beim Zugriff auf das Array entweder über einen Counter (iAnzahlCB) oder durch Prüfung auf NULL sicherstellen, dass der Zeiger gültig ist.



  • Nimm einen std::vector :

    class TForm1 : public TForm
    {
    ...
       std::vector<TComboBox*> Comboboxes_;
    };
    
    TForm1::TForm1( TComponent* Owner ) : TForm( Owner )
    {
       for( unsigned int i = 0; i < 5; ++i )
       {
          TComboBox* cbx = new TComboBox( this );
    
          // Attribute zuweisen
          cbx->Parent = ...
    
          Comboboxes_.push_back( cbx );
       }
    }
    


  • Danke für die Antworten gleich mal ausprobieren 🙂


Anmelden zum Antworten