Lecture de fichier sous Qt

Fermé
electrikBoy Messages postés 27 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 26 juillet 2010 - 22 juin 2010 à 11:02
electrikBoy Messages postés 27 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 26 juillet 2010 - 23 juin 2010 à 09:40
Bonjour,
Travaillant actuellement sous Qt, je dois lire des informations dans un fichier .bin.
J'ai donc réalisé le code suivant qui me peremt de récupérer les informations qui m'interessent sur la deuxième ligne du fichier :

DataFile :: DataFile (QString file)
{
QFile FileInBin (file); //Permit to enter in the file
FileInBin.open(QIODevice::ReadOnly); // Opening of the file in reading mode only
if (FileInBin.exists()) //If the file exists...
{
QTextStream Text(&FileInBin); //Creation of one variable which can read it
QString Line;
Line=Text.readLine();
NumberElectrode=NumberOfElectrode(Line, Text);
}
else //... if the file doesn't exist
{
QMessageBox::warning(0, "Problem","This file doesn't exist"); //Warning message
}
FileInBin.close();
}

Puis j'appelle la fonction NumberOfElectrode de la manière suivante :

int DataFile :: NumberOfElectrode (QString line, QTextStream text)
{
int Nb=0;
int fac =0;
line=text.readLine(1); //Read the first caracter of the second line while((line=="0")|(line=="1")|(line=="2")|(line=="3")|(line=="4")|(line=="5")|(line=="6")|(line=="7")|(line=="8")|(line=="9")) //While the caracter is a number
{
fac=line.toInt(); // Tranform the caracter in a number because line is string type
Nb=Nb*10+fac; // Put the caracter in the units of the number of electrodes
line=text.readLine(1); // Read the next caracter
}
return Nb; //Return the number of electrodes
}

La console m'affiche le message d'erreur suivant :
Initializing argument 2 of 'int DataFile::NumberOfElectrode (QString, QTextStream)' au niveau de la ligne mise en évidence.

Pourriez vous m'aider s'il vous plait?
Merci
A voir également:

5 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
22 juin 2010 à 11:42
Déclare plutôt ta fonction comme:
int DataFile::NumberOfElectrode (QString line, const QTextStream& text)
ce qui ne garantit pas que le programme soit correct mais au moins il sera compilable ;-)
Bonne continuation.
0
electrikBoy Messages postés 27 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 26 juillet 2010
22 juin 2010 à 11:53
Merci loupius mais ça ne compile toujours pas, il me dit qu'il n'est pas possible d'effectuer line=text.readLine(1); dans ce cas!
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
22 juin 2010 à 12:31
essai un passage par pointeur, ça devrais passer.
int DataFile::NumberOfElectrode (QString line, QTextStream* text)
Il faut juste modifier un peu ta fonction.
Ce que dit loupius peut peut-être fonctionner si tu enlève le const.
0
electrikBoy Messages postés 27 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 26 juillet 2010
22 juin 2010 à 13:10
Ah ouais exact ça marche bien quand j'enlève le const. Si quelqu'un peut m'expliquer pourquoi? J'avoue être un peu dépassé là.
Merci Char Snipeur
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
22 juin 2010 à 13:18
Oui le const peut sans doute coincer, je dois dire que je n'avais pas regardé le contenu de la méthode 'NumberOfElectrode'.
Si je puis me permettre et si j'ai bien compris que le but était d'analyser une ligne commençant par un entier, alors cette méthode est mal faite:
- il vaut mieux lire une ligne entière et ensuite analyser le contenu de cette ligne.
Bonne continuation.
0

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

Posez votre question
electrikBoy Messages postés 27 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 26 juillet 2010
23 juin 2010 à 09:40
Ok loupius, je vais y réfléchir. En tout cas merci à vous deux!!
0