Lecture fichier [c++ builder]

SaXo360 Messages postés 31 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 21 mars 2007 - 10 avril 2006 à 17:35
SaXo360 Messages postés 31 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 21 mars 2007 - 12 avril 2006 à 11:41
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

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

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
SaXo360 Messages postés 31 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 21 mars 2007
10 avril 2006 à 19:30
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
0
Dvdmizo Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 3 mai 2006
11 avril 2006 à 16:31
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
0
SaXo360 Messages postés 31 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 21 mars 2007
11 avril 2006 à 17:13
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 :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dvdmizo Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 3 mai 2006
12 avril 2006 à 10:39
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
0
SaXo360 Messages postés 31 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 21 mars 2007
12 avril 2006 à 11:41
Merci beaucoup :).
Je n'y avait pas pensé :/
Je me douté que ca venait de là mais je savais pas où.
Encore merci :D
0
Rejoignez-nous