Je cherche à enregistrer les données contenues dans chaque case de mon tableau dans un fichier txt. Pour cela, j'ai écris le code suivant:
void MainWindow::save()
{
QFile* fichier = new QFile("Données"+m_nom);
fichier->resize(0);
int r = MainWindow::modeleTableau->rowCount();
for (int i =0; i<r;i++)
{
for (int j =0; j<10; j++)
{
QModelIndex index = MainWindow::modeleTableau->index(i, j, QModelIndex());
QVariant a = MainWindow::modeleTableau->data(index, Qt::DisplayRole);
QString msg = a.toString();
if ((i==r-1) & (j==9))
{
fichier->open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Append);
QTextStream stream(fichier);
stream << msg;
fichier->close();
}
else
{
fichier->open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Append);
QTextStream stream(fichier);
stream << msg;
stream << '\n' << flush;
fichier->close();
}
}
}
}
Lorsque je sauvegarde une première fois, pas de problème, le txt renvoyé est tel que je le souhaite. Cependant, si je sauvegarde une nouvelle fois, de nouvelle lignes vides se rajoutent, arrangeant ainsi mon tableau d'une manière totalement différente que précédemment.
QFile est classe a semantique de valeur, n'utilises pas new pour créer un QFile. Tu as une fuite mémoire.
A priori, aucune raison que le fait d'ecrire 2 fois les memes données donne 2 resultats différents. C'est que tes données sont modifiées. Vérifies la taille de ton tableau a chaque fois que tu appelles cette fonction. Et passe en debug en pas a pas pour voir ce qu'il se passe.
(Tu fais quoi exactement ? Tu ecris 2 fois ton tableau ? Ou tu ecris ton tableau, le lis, puis le réecrit ?)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Discord NaN. Mon site.