Lecture fichier [c++ builder]

Signaler
Messages postés
31
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
21 mars 2007
-
Messages postés
31
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
21 mars 2007
-
Bonjour, je lis dans un fichier des noms séparé par ce caractèere ';' et je devrait afficher ces noms dans mon combobox mais cane veut pas pourtant je suis quasi sur de mon code :/. je suis sous c++ builder.
C'est pour ca, un oeil exterieur pourrait peut etre m'aider :)

Voici le code : (jouvre le fichier plus haut dans le code)

char var;
char *couple="";
char mots[20];
int i=0;
int taille=0;


taille=FileSeek(desc,0,2);


Edit2->Text=taille;



while(taille!=0)
{
FileRead(desc,&var,1);


if(var==';')
{
int p=0;


p=i+1;
couple=new char[p];


for(int j=0; jItems->Add("couple");
i=0;
delete(couple);
}


else
{
mots[i]=var;
i++;
}


taille--;
}

6 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Juste pour savoir. Est-ce qu'il affiche couple dans ton combobox?

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
31
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
21 mars 2007

non :/
J'avais fais exprès pour tester en mettant directement une chaine et ca s'affiche pas :/
Par contre si je met cette meme ligne en dehors de la boucle while ca marche :/

La vraie ligne pour affichier les noms c'était : ComboBox1->Items->Add(couple);
mais ca marche pas
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
3 mai 2006

salut,



en faisant :



FileSeek(desc,0,2);



tu te places à la fin de ton fichier et ensuite tu lis des caractères avec :



FileRead(desc,&var,1);



mais si tu ne remontes pas au début du fichier entre temps, tu tentes
de lire à la fin de ton fichier, ce qui n'a aucun effet. Par conséquent
tu n'auras jamais le caractère ';' dans ta variable var et donc tu
n'ajouteras jamais rien dans ta ComboBox



essaye d'ajouter :



FileSeek(desc,0,0);



juste avant d'entrer dans ta boucle while.





j'espère que ça résout ton problème
DvdMizo
Messages postés
31
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
21 mars 2007

Merci beaucoup, c'était ca en fait :)

Par contre ca m'affiche pas correctement le contenu de mon fichier :/

Dans mon fichier c'est comme ca : a;z;e;r;t;kiki;grizouille;tiop;junior;
et dans mon combobox ca s'affiche comme ca :
aV
zV
eV
rV
tV
kiki
grizouille
tiop
juniorX

Encore un pitit coup de main svp :)
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
3 mai 2006

je pense que quand tu mets le '\0' de fin de chaine :



couple[p]='\0';



tu le mets un caractère "trop loin". en effet, tu incrémentes i à chaque caractère donc pour chaque caractère tu as :



mots[0] -> i = 1

mots[1] -> i = 2

mots[2] -> i = 3

etc...



mais quand tu affectes p tu fais :



p=i+1;



ce qui veut dire que si tu as (par exemple) 1 caractère ( 'a' par exemple) dans 'mots', au moment du ';' tu as :

mots[0] = 'a'

i = 1

p = i+1 // donc p=2



donc:

couple[p]='\0';



revient à faire :

couple[2]='\0';



ce qui veut dire que tu conserves le contenu de couple[1] et donc il peut y avoir n'importe quoi dedans...

il faudrait plutot faire :

couple[i]='\0';



je pense que ça devrait marcher mieux.
DvdMizo
Messages postés
31
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
21 mars 2007

Merci beaucoup :).
Je n'y avait pas pensé :/
Je me douté que ca venait de là mais je savais pas où.
Encore merci :D