Edit per Variable ansprechen



  • Hallo an alle 😃 ,

    Ich habe folgendes Problem:
    Ich habe eine variable mit einer Zahl von Eins bis 50 und noch weitere 50 Edits.
    Wenn nun die Variable den Wert 38 enthält, soll auf dem Edit 38 Hallo ausgegeben werden. Hier mal der Code wie ich das realisieren wollte:

    int A=38; //Die Variable die das Edit entscheidet
    Edit[A]->Text="Hallo"; //Auf dem edit 38 soll hallo ausgegeben werden
    

    wenn ich den Code Compilieren Möchte kommt aber folgende Fehlermeldung:

    E2451 Undefined symbol 'Edit'

    Das heist ja das er Edit nicht mehr kennt.
    Kann mir jemand helfen wie ich dem Edit eine Variable zuweisen kann.

    PS: Es drengt nicht ich habe es mit einer for schleife und einer if angabe geschafft es würde mich nur trotzdem interessieren ob das funktioniert. 😉

    THX 😃



  • Hallo

    Siehe FAQ hier im Forum, Abschnitt Komponenten benutzen, Thread Dynamische Arrays von Komponenten.

    bis bald
    akari



  • 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