ASSERT failure in QList<T>::operator[]: "index out of range"
-
Read data and appear on the screen every 20 seconds. When i run I have index out of range error.
What my mistake?#include "mainwindow.h" #include "ui_mainwindow.h" #include <QFile> #include <QTextStream> #include <QMessageBox> #include <QTimer> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), SLOT(on_pushButton_clicked())); QString line = allLines[curIndex]; ui->plainTextEdit->setPlainText(line); if(curIndex < allLines.size() - 1) { curIndex++; } timer ->start(20000); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_2_clicked() //write { QFile file("C:/Users/ilknu/Documents/QFileDemo/abc.txt"); if(!file.open(QFile::WriteOnly | QFile::Text )) { QMessageBox::warning(this, "title", "file not open"); } QTextStream out (&file); QString text = ui->plainTextEdit->toPlainText(); out << text; file.flush(); file.close(); } void MainWindow::on_pushButton_clicked() //read { QFile file("C:/Users/ilknu/Documents/QFileDemo/abc.txt"); // QMessageBox::warning(this, "title", "file not open"); // QTextStream in (&file); // while (!in.atEnd()) { // QString text = in.readLine(); // } //QString text = in.readLine(); if(file.open(QIODevice::ReadOnly)) { QTextStream in (&file); while (!in.atEnd()) { QString line = in.readLine(); // ui -> plainTextEdit->setPlainText(all); allLines.append(line); //listeye ekliyoruz } file.close(); } // file.close(); } -
Read data and appear on the screen every 20 seconds. When i run I have index out of range error.
What my mistake?#include "mainwindow.h" #include "ui_mainwindow.h" #include <QFile> #include <QTextStream> #include <QMessageBox> #include <QTimer> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), SLOT(on_pushButton_clicked())); QString line = allLines[curIndex]; ui->plainTextEdit->setPlainText(line); if(curIndex < allLines.size() - 1) { curIndex++; } timer ->start(20000); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_2_clicked() //write { QFile file("C:/Users/ilknu/Documents/QFileDemo/abc.txt"); if(!file.open(QFile::WriteOnly | QFile::Text )) { QMessageBox::warning(this, "title", "file not open"); } QTextStream out (&file); QString text = ui->plainTextEdit->toPlainText(); out << text; file.flush(); file.close(); } void MainWindow::on_pushButton_clicked() //read { QFile file("C:/Users/ilknu/Documents/QFileDemo/abc.txt"); // QMessageBox::warning(this, "title", "file not open"); // QTextStream in (&file); // while (!in.atEnd()) { // QString text = in.readLine(); // } //QString text = in.readLine(); if(file.open(QIODevice::ReadOnly)) { QTextStream in (&file); while (!in.atEnd()) { QString line = in.readLine(); // ui -> plainTextEdit->setPlainText(all); allLines.append(line); //listeye ekliyoruz } file.close(); } // file.close(); }@suslucoder
Your mistake is that you have an index out of range, as the message tells you!And since the only place you use a
QListwith an index is:QString line = allLines[curIndex];So why don't you debug or print out
curIndexon the line above that? At which point, my guess is you discover first time it's an uninitialized member variable...? -
Read data and appear on the screen every 20 seconds. When i run I have index out of range error.
What my mistake?#include "mainwindow.h" #include "ui_mainwindow.h" #include <QFile> #include <QTextStream> #include <QMessageBox> #include <QTimer> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), SLOT(on_pushButton_clicked())); QString line = allLines[curIndex]; ui->plainTextEdit->setPlainText(line); if(curIndex < allLines.size() - 1) { curIndex++; } timer ->start(20000); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_2_clicked() //write { QFile file("C:/Users/ilknu/Documents/QFileDemo/abc.txt"); if(!file.open(QFile::WriteOnly | QFile::Text )) { QMessageBox::warning(this, "title", "file not open"); } QTextStream out (&file); QString text = ui->plainTextEdit->toPlainText(); out << text; file.flush(); file.close(); } void MainWindow::on_pushButton_clicked() //read { QFile file("C:/Users/ilknu/Documents/QFileDemo/abc.txt"); // QMessageBox::warning(this, "title", "file not open"); // QTextStream in (&file); // while (!in.atEnd()) { // QString text = in.readLine(); // } //QString text = in.readLine(); if(file.open(QIODevice::ReadOnly)) { QTextStream in (&file); while (!in.atEnd()) { QString line = in.readLine(); // ui -> plainTextEdit->setPlainText(all); allLines.append(line); //listeye ekliyoruz } file.close(); } // file.close(); }@suslucoder IT may help if you post the actual error message - especially its location .
Another suggestion - when dealing with data - perhaps adding code to tell when the condition is not true may also help.if( data)
process data.....
else
no data to process