Edit per Variable ansprechen



  • Danke Akari 🙂

    Aber ich weiss nicht wie ich diese Beispiele auf Edits anwenden soll.
    Ich wäre für 10 Zeilen Vorführcode sehr dankbar 😃 .



  • Siehe hier: FAQ



  • Dankeschön das war was ich gesucht habe. 😃



  • Beispiel:

    // Array anlegen
     TEdit  *Zeiger_auf_TEdits[50];
    
     // Zeiger speichern
     Zeiger_auf_TEdits[0] = Edit1;
     Zeiger_auf_TEdits[1] = Edit2;
     usw.
    
     // Text ausgeben
     Zeiger_auf_TEdits[0]->Text = "Ich werde nächstes mal erst die FAQ lesen";
     usw.
    


  • @sonic_1233,
    vergiss das casten nicht.

    TEdit  *Zeiger_auf_TEdits[50];
       Zeiger_auf_TEdits[0] = dynamic_cast<TEdit*>(Edit1);
       .
       .
    

    Ein loop wäre auch nicht übel 😉



  • 🙂
    Ich habs gerade ausprobiert. Ohne "dynamic_cast" gehts auch.



  • sonic_1233 schrieb:

    🙂
    Ich habs gerade ausprobiert. Ohne "dynamic_cast" gehts auch.

    Das hat ja auch niemand abgestritten, aber dynamic_cast gibt einen NULL-Zeiger zurück, wenn der Cast fehlschlägt. Den kann man überprüfen, bevor man mit undefiniertem Verhalten konfrontiert wird, oder, im günstigeren Fall, direkt mit einer Zugriffsverletzung auf die Nase fällt.

    Davon abgesehen ist das unnötiger Aufwand, den Da da treibst, in dem Du ein eigenes Array erstellst und in diesem die Zeiger auf die TEdits speicherst. Dies gibt es nämlich bereits in jedem TForm, nennt sich Components. Und da kommt dann der dynamic_cast ins Spiel, weil man eben nicht weiß, ob es sich bei der aktuellen Komponente um ein TEdit handelt.



  • @kpeter
    Wozu sollte man hier einen dynamic_cast brauchen? Die Zeiger sind doch schon vom richtigen Typ.



  • @ Joe_M:

    danke, habe wieder was dazu gelernt 🙂



  • hallo,

    wenn man jetzt sagen wir mal diesen code :

    // Array anlegen
     TEdit  *Zeiger_auf_TEdits[50];
    
     // Zeiger speichern
     Zeiger_auf_TEdits[0] = Edit1;
     Zeiger_auf_TEdits[1] = Edit2;
     usw.
    
     // Text ausgeben
     Zeiger_auf_TEdits[0]->Text = "Ich werde nächstes mal erst die FAQ lesen";
     usw.
    

    in eine Funktion einbetten möchte wie macht man das dann??????

    ich hab es so probiert, aber so geht es nicht.....

    void Edit_FKT(TEdit  *Zeiger_auf_TEdits[50])
    {
    Zeiger_auf_TEdits[0] = Edit1;
    Zeiger_auf_TEdits[1] = Edit2;
    usw.
    }
    

    und der Aufruf.....
    [cpp]
    main()
    {
    TEdit *Bsp[50];
    Edit_FKT(&Bsp[50]);
    BSP[39]->Text = "hallo";
    }

    so hätt ich mir das prinzipiell gedacht......
    funktioniert aber nicht..... was habe ich falsch gemacht????
    ich geb zu ich kenn mich mit den pointern noch nicht so ganz gut aus....

    mfg ZOD



  • sorry.....jetzt in schoen.....

    main()
    {
    TEdit *Bsp[50];
    Edit_FKT(&Bsp[50]);
    BSP[39]->Text = "hallo";
    }
    

    so hätt ich mir das prinzipiell gedacht......
    funktioniert aber nicht..... was habe ich falsch gemacht????
    ich geb zu ich kenn mich mit den pointern noch nicht so ganz gut aus....

    mfg ZOD



  • Einfach nur

    TEdit *Bsp[50];
    Edit_FKT(Bsp);
    

Anmelden zum Antworten