[C+GTK]Résultat diff de fonc GTK/DOS
Résolu/Fermé
Thib42
Messages postés
12
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
31 juillet 2006
-
13 juil. 2006 à 12:35
Thib42 Messages postés 12 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 31 juillet 2006 - 17 juil. 2006 à 16:44
Thib42 Messages postés 12 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 31 juillet 2006 - 17 juil. 2006 à 16:44
A voir également:
- [C+GTK]Résultat diff de fonc GTK/DOS
- Resultat foot - Télécharger - Vie quotidienne
- Lexer resultat - Télécharger - Sport
- Resultat loto d'aujourd'hui rdc ✓ - Forum Excel
- Diff message ✓ - Forum Mobile
- Console dos ✓ - Forum Programmation
2 réponses
Thib42
Messages postés
12
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
31 juillet 2006
1
13 juil. 2006 à 13:21
13 juil. 2006 à 13:21
Code simplifié :
Graphique :
DOS :
Graphique :
void OnButtonConvertir(GtkWidget *pWidget, gpointer data){ gchar* sUtf8; int res; char mess[256]; res = traitementAll("c:\\blabla\\fichiersource.txt", pApp->pProgress); // pApp->pProgress = var globale switch (res){ case 1: break; case -1: snprintf(mess,256,"Erreur 1\n"); break; case -2: snprintf(mess,256,"Erreur 2"); break; case -3: snprintf(mess,256,"Erreur 3"); break; case -4: snprintf(mess,256,"Erreur 4"); break; case -6: snprintf(mess,256,"Erreur 5"); break; default: snprintf(mess,256,"Erreur pendant le traitement. Code : %d",res); break; } if (res != 1){ sUtf8 = g_locale_to_utf8(mess, -1, NULL, NULL, NULL); pError = gtk_message_dialog_new (GTK_WINDOW(data), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, sUtf8); /* Affichage de la boite de message */ gtk_dialog_run(GTK_DIALOG(pError)); /* Destruction de la boite de message */ gtk_widget_destroy(pError); } if (res == 1){ sUtf8 = g_locale_to_utf8("Le traitement d'importation a réussi.\nOK pour continuer.", -1, NULL, NULL, NULL); pFini = gtk_message_dialog_new (GTK_WINDOW(data), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, sUtf8); /* Affichage de la boite de message */ gtk_dialog_run(GTK_DIALOG(pFini)); /* Destruction de la boite de message */ gtk_widget_destroy(pFini); } g_free(sUtf8); }
DOS :
int main(int argc, char *argv[]){ int res; res = traitementAll("c:\\blabla\\fichiersource.txt"); switch (res){ case 1: break; case -1: snprintf(mess,256,"Erreur 1\n"); break; case -2: snprintf(mess,256,"Erreur 2"); break; case -3: snprintf(mess,256,"Erreur 3"); break; case -4: snprintf(mess,256,"Erreur 4"); break; case -6: snprintf(mess,256,"Erreur 5"); break; default: snprintf(mess,256,"Erreur pendant le traitement. Code : %d",res); break; } printf("%s\n",mess); return EXIT_SUCCESS; }
Thib42
Messages postés
12
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
31 juillet 2006
1
17 juil. 2006 à 16:44
17 juil. 2006 à 16:44
Problème résolu, j'ai trouvé la solution !
Voila donc ce que j'ai fait pour ceux qui rencontrerais ce type de problèmes ...
Le problème venais en fait de l'utilisation de la fonction sscanf, qui est très capricieuse ...
J'utilisais cette fonction pour lire ligne par ligne un fichier en identificant 7 valeurs (entiers,chaines et réels) et celle ci fonctionnait correctement en utilisant un programme "DOS" mais posait problème quand lancé par une fonction de l'interface GTK, associée au click sur un bouton : elle renvoyait systematiquement une valeur différente de 7 ...
Je me suis donc arranger pour séparer chacun des champs à identifier dans un buffer et j'ai utiliser le sscanf sur ce buffer (1 valeur à identifier à la fois). Et la miracle ca fonctionne !
Forcement le programme est beaucoup plus lourd (7 appels successif à sscanf au lieu d'un seul) mais au moin ca fonctionne aussi bien sous DOS qu'avec l'interface graphique !
Voila donc ce que j'ai fait pour ceux qui rencontrerais ce type de problèmes ...
Le problème venais en fait de l'utilisation de la fonction sscanf, qui est très capricieuse ...
J'utilisais cette fonction pour lire ligne par ligne un fichier en identificant 7 valeurs (entiers,chaines et réels) et celle ci fonctionnait correctement en utilisant un programme "DOS" mais posait problème quand lancé par une fonction de l'interface GTK, associée au click sur un bouton : elle renvoyait systematiquement une valeur différente de 7 ...
Je me suis donc arranger pour séparer chacun des champs à identifier dans un buffer et j'ai utiliser le sscanf sur ce buffer (1 valeur à identifier à la fois). Et la miracle ca fonctionne !
Forcement le programme est beaucoup plus lourd (7 appels successif à sscanf au lieu d'un seul) mais au moin ca fonctionne aussi bien sous DOS qu'avec l'interface graphique !