2010-07-02 2 views
0

J'ai besoin de créer une collection GdkPixBuf. J'essaie de sauver pixbufs dans GList - mw-> disp_list:GdkPixbuf Collection

GtkTreeIter iter; 
int i = 0; 

for (i; i < g_list_length(list) - 1; ++i) 
{      
    char* file = image_list_get_current_file_path(list); 

    mw->p1 = gdk_pixbuf_new_from_file(file,NULL); 
    mw->p1 = scale_pix(mw->p1,128); 

    mw->disp_list = g_list_append (mw->disp_list, mw->p1); 

    if (!mw->img_list->current->next) 
     image_list_get_first(mw->img_list); 
    else 
     image_list_get_next(mw->img_list); 
} 

p1 - il est GtkPixBuf *. Mais quand j'essaie d'utiliser mw-> disp_list dans une autre fonction, je vois que c'est NULL. Qu'est-ce qui ne va pas?

Merci.

+0

comme première chose, j'ai remarqué comme étrange la boucle for; vous n'avez pas besoin de la première partie de pour, si vous initialisez le var en dehors de la boucle: 'for (; i <...' est ok, alors que 'for (i; i <...' fonctionne aussi mais je est évalué sans raison, habituellement vous écrivez une boucle comme 'for (i = 0; i <...' et vous pouvez écrire simplement 'int i;' au lieu de 'int i = 0;' – ShinTakezou

+0

une autre note sur le loop; 'i ShinTakezou

Répondre

1

Au moment où je vois juste un problème, et il est à peu près la boucle qui devrait être:

for (i = 0; i < g_list_length(list); ++i) 

Le problème pourrait être le -1: si la liste contient 1 élément, vous ne boucle du tout , puisque 1-1 = 0 et 0 < 0 est faux.

Questions connexes