IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Erreur Windows : incompréhension !


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut Erreur Windows : incompréhension !
    Excusez moi de vous déranger de si bon matin mais je viens de coder ça et ça ne marche pas[Erreur Windows] et pas d'erreur dans devc++. Si quelqu'un a une idée, je lui serai assez reconnaissant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    void ajout_intitule(gpointer *data)
    {
    	MainWindow *pApp;
    	char *chaine1,*chaine2,*chaine3;
    	char c;
    	FILE *fp;
        GList *list=NULL;
     
        pApp = (MainWindow*) data;
    	/*Ouverture du fichier texte en écriture*/
    	fopen("memo.txt","r+");
    	/*Allocation mémoire des chaines de textes*/
    	chaine1=(char*)calloc(81,sizeof(char));
    	chaine2=(char*)calloc(81,sizeof(char));
    	chaine3=(char*)calloc(81,sizeof(char));
    	c=getc(fp);//pour supprimer les guillemets
    	/*tant qu'on a pas atteint la fin du fichier, on cherche les intitulés*/
    	while (c!=EOF){
                            fgets(chaine1,80,fp);
                            fgets(chaine2,80,fp);
                            fgets(chaine3,80,fp);
                            /*on ajoute la première chaine qui correspond au titre*/
                            list = g_list_append(list, g_strdup_printf(chaine1));
                            /*pour éviter de mélanger deux titre, on réinitialise chaine1*/
                            c=getc(fp);//pour supprimer les guillemets                               
                          } 
        gtk_combo_set_popdown_strings(GTK_COMBO(pApp->pComboaffich), list) ;
        close(fp);}

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Je ne comprend pas bien ce que tu fait, ca me parait un peu bizarre je dois l'avouer ! En fait, tu fait des getc (je te conseil par ailleurs fgetc) idem dans une boucle puis en même temps 3 fgets à chaque tour de boucle... je crois qu'il va falloir que tu (re)réfléchisse à ton algorithme là

    A chaque appel de fgets tu lis la ligne suivante de ton fichier, sache-le !

    Par ailleurs, je ne sais pas quelle version de GTK+ tu utilises mais le widget GtkCombo est dépréciée depuis la 2.4 et nous en sommes à la 2.10 ! Si tu changes de widget après cette information, voir mon tutoriel: Bien utiliser les GtkComboBox et GtkComboBoxEntry
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    J'aurai dû metter une légère explication, il est vrai.
    Ce bout de code me permet de lire les trois lignes composant un mémo dans un fichier texte. le getc, me permet de dégager les " présent au début de la première de mes trois lignes.

    L'objectif étant de lire une ligne sur trois afin de n'afficher que les titres de mes mémos dans ma combo. Et, effectivement, je travaille avec une version bien inférieur à la 2.4

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Il serait un peu urgent de mettre à jour ton GTK+ quand même, la version 2.4 date déjà de 2005 alors j'ose même pas imagine les plus vieilles

    Bon passons, ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void ajout_intitule(gpointer *data)
    Tu devrais savoir que le type gpointer est équivalent à void * donc faire comme tu faits abouti à un argument de type void ** ce qui n'est forcément pas correct ! Cette fonction, je l'espère, n'est pas un callback et si s'en est un, pour quel signal de quel widget ? Car quel que soit le cas de figure la signature n'est alors pas correcte !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void ajout_intitule(gpointer data)
    Si je mets cela, au moment de l'appel de ma fonction, je dois bien mettre ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajout_intitule((gpointer) pApp);

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Si pApp est un pointeur oui, ca va de soi Est-ce que c'est un callback ? Sinon pourquoi le type gpointer ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    C'en est bien un. Arf, je comprends pas pourquoi ça marche pas. Ca marche avec une autre de mes fonctions mais pas avec celle la...

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Matalobos
    C'en est bien un. Arf, je comprends pas pourquoi ça marche pas. Ca marche avec une autre de mes fonctions mais pas avec celle la...
    Ta fonction c'est un callback (ca fait trois fois que je demande là) ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  9. #9
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    Oups, j'avais répondu mais j'ai du effacer. Non ce n'est pas un callback. Ca peut le devenir, à vrai dire, j'hésite entre les deux.

    Soit faire celà dès le main, soit faire celà en appuyant sur un bouton.

  10. #10
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Les caractère " se trouve toujours en début de ligne donc à l'index 0 d'une chaîne et à la fin ? Si tu pouvais me montrer à quoi ca ressemble dans ton fichier
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  11. #11
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    "intitulé

    corps du mémo",0,"catégorie"
    J'ai retiré les c=getc(fp). Déjà, j'affiche les intitulés et aorès je verrai à les virer...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    void ajout_intitule(gpointer data)
    {
    	MainWindow *pApp;
    	char *chaine1,*chaine2,*chaine3;
    	FILE *fp;
        GList *list2=NULL;
     
        pApp = (MainWindow*) data;
        gtk_widget_show(pApp->pComboaffich);
    	/*Ouverture du fichier texte en écriture*/
    	fopen("memo.txt","r");
    	/*Allocation mémoire des chaines de textes*/
    	chaine1=calloc(81,sizeof(char));
    	chaine2=calloc(81,sizeof(char));
    	chaine3=calloc(81,sizeof(char));
    	/*tant qu'on a pas atteint la fin du fichier, on cherche les intitulés*/
    	while (!feof(fp)){
                            fgets(chaine1,81,fp);
                            fgets(chaine2,81,fp);
                            fgets(chaine3,81,fp);
                            /*on ajoute la première chaine qui correspond au titre*/
                            list2 = g_list_append(list2, g_strdup_printf("%s",chaine1));
                          } 
        gtk_combo_set_popdown_strings(GTK_COMBO(pApp->pComboaffich), list2) ;
        close(fp); 
    }

  12. #12
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Est-ce que tu sais exactement à quel moment ca déconne ? Je te conseil de mettre une fois pour voir un printf de ce genre:
    juste avant la boucle et un autre après la boucle avec un autre numéro, histoire de pouvoir déterminer un endroit plus ou moins précis de l'erreur, après ce n'est que de la déduction en procédant de la même façon pour trouver l'erreur exacte ! Bien sûr, il faut que tu affiche une console pour voir tout ceci !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_widget_show(pApp->pComboaffich);
    Pourquoi ? Il n'est pas déjà affiché ? Je trouve par ailleurs que la structure générale du fichier d'enregistrement n'est pas des plus pratique !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  13. #13
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    Si il est affiché, ça doit rester du moment où j'avais voulu passer en callback la fonction. Dans ce cas là, je ne voulais pas que ça s'affiche tant que ce n'était pas rempli.

    J'ai rajouté les printf mais il semblerait que le programme ne se lance pas du tout... Il me renvoie l'erreur windows d'un coup et il n'y a rien de modifié dans le fichier texte.
    l'avait pas vu le mot console. Je retente

  14. #14
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    J'ai mis ces deux printf. Si je n'appelle pas ma fonction d'ajout pour une autre combo, ça ne pose aucun problème mis à part le fait que celà n'ajoute rien.

    Si je demande aux deux fonctions de tourner à la suite, ça pose un problème.

  15. #15
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Désolé mais je te suit de moins en moins, c'est dur d'imaginer
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  16. #16
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    Je comprends que tu n'aies pas vu l'erreur, elle est super conne... J'ai ouvert mon fichier dans ... rien du tout !
    Maintenant, j'essaye de virer mes guillemets et il faut que j'interdise les accents.

    On a le droit de se moquer !

  17. #17
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Matalobos
    Je comprends que tu n'aies pas vu l'erreur, elle est super conne... J'ai ouvert mon fichier dans ... rien du tout !
    Maintenant, j'essaye de virer mes guillemets et il faut que j'interdise les accents.
    Pourquoi interdire les accents ? Si tu transformes tes chaînes en UTF8 tu n'as aucun problème pour les afficher ensuite dans ton interface GTK+ !

    Citation Envoyé par Matalobos
    On a le droit de se moquer !
    Ok ...

    La structure du fichier vous est imposée ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  18. #18
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    oui, le format est imposé et assez nul.

    Convertir en UTF8. Kézako?

  19. #19
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Matalobos
    oui, le format est imposé et assez nul.

    Convertir en UTF8. Kézako?
    http://gtk.developpez.com/cours/gtk2/Gtk.Les.labels.php

    Voir le chapitre 2 Les caractères accentués !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  20. #20
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    Merci bien, voila qui va changer tous mes programmes Merci pour toute ton aide cher Franck.h. J'ai encore un peu de boulot pour finir tout ça mais ça devrait aller.

    Par hasard, tu connaitrais pas le format cvs ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. pleeeeeins de polys et erreur windows...
    Par Antickriszt dans le forum OpenGL
    Réponses: 3
    Dernier message: 28/06/2005, 14h30
  2. erreur 104 incompréhensible
    Par shadowmoon dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/05/2005, 16h16
  3. Message erreur Windows 16 bits
    Par francis m dans le forum Windows XP
    Réponses: 2
    Dernier message: 24/04/2005, 16h29
  4. Message d'erreur Windows lors de l'exécution de l'appli D6-
    Par kolac dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/12/2004, 17h55
  5. Erreur windows lors du malloc
    Par Elessar dans le forum C
    Réponses: 5
    Dernier message: 16/12/2003, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo