[SOLVED]GTK+ 3 loop trough array of Widgets



  • Hallo ,

    ich hoffe hier kann mir jemand weiterhelfen.

    ich schreibe gerade ein Programm welches die Widgets zur Laufzeit dynamisch erstellt.
    Die Anzahl der z.b. labels und event boxen wird durch die Anzahl der in Mysql DB hinterlegten kriterien bestimmt.

    ich habe z.b. die Eventboxen per GtkWidget * box[anz] deklariert und diese werden
    in der dazugehörigen while schleife auch sauber erstellt.

    while ((row = mysql_fetch_row(result))){
    box[anz]= gtk_event_box_new();
    anz+=1
    

    }

    funktioniert auch alles tadellos...
    aber
    ich versuche per schleife in einer funktion auf die einzelnen felder zuzugreifen, was auch bei der direkten ansprache z.b.

    gtk_widget_get_name(GTK_WIDGET(box[1]))
    

    auch einwandfrei funktioniert.

    wenn ich jedoch versuche dies über eine variable zu tun wird das programm gekillt.

    hier der code

    int i;
    for (i=0;i<sizeof(box);i++){
    gtk_label_set_text(textlabel,gtk_widget_get_name(GTK_WIDGET(box[i])));
    }
    

    ich hoffe ihr könnt mir helfen



  • Du greifst in deiner for-Schleife auf Elemente außerhalb deines Arrays zu. Hast du dir schon mal angesehen, welchen Wert sizeof(box) liefert? Es liefert nicht die Anzahl der Elemente sondern die Größe des Arrays, des kompletten Arrays. Entweder du kannst die Variable anz aus deiner while-Schleife verwenden, oder du musst sizeof(box) noch durch die Größe eines Elementes dividieren.



  • Danke für die aufschlußreiche Antwort.
    Manchmal ist man halt betriebsblind.
    Hab einfach die globale Zählervariable genommen


Anmelden zum Antworten