QFile не открывается - PullRequest
       1

QFile не открывается

0 голосов
/ 04 марта 2012

Я написал следующий код для извлечения данных из файла (который уже существует, и разрешение также дано, потому что я нахожусь в ОС Windows), и создаю элементы для отображения фрагментов данных в списке, но в списке не будет отображаться какой-либо вещь. Более того, я понял, что даже когда файл не был создан, функция FILE.EXISTS () вернула true. почему это так?

 void MainWindow::on_listWidget_itemClicked(QListWidgetItem *item)  
 {
     ui->listWidget_2->clear();
     QListWidgetItem *itm=new QListWidgetItem;
     ui->commentbutton->setEnabled(true);

     QFile files("E:/"+QString::number(ui->listWidget->currentRow())+"com.txt");

     if(files.exists())
     {
         if(!files.open(QFile::ReadOnly | QFile::Text))
         {
              QMessageBox::warning(this,"File Access!!!","The File containing data of      the Items and Comments can't be acessed",QMessageBox::Ok);
              return;
         }
         QTextStream in(&files);
         QString data(in.readLine());
         int x=0;

         QString temp;

         for(int i=0;;i++)
          {
             if(data.at(i)!='@' && data.at(i+1)!='#')
             {
                 temp[x]=data.at(i);
                 x++;
             }
             else
                 if(data.at(i)=='@' && data.at(i+1)=='#')
                 {
                     x=0;
                     i++;
                     itm->setText(temp);
                     ui->listWidget_2->addItem(itm);
                 }
             if(data.end())
                 break;
         }
         files.close();
     }

путь, по которому создаются файлы: 0 & 1 are the files containing the data stored in items and 0com is the comment file associated with 0 item file

Это данные, хранящиеся в файле 0com.txt (файл комментариев): NewYork @ # @ # Лондон Спасибо за ваше время!

1 Ответ

2 голосов
/ 04 марта 2012

1) 0com.txt действительно существует. Для какого текущего номера строки в ui->listWidget у вас есть "false" files.exists()?

2) data.end () возвращает итератор в стиле STL, в то время как ваш увеличивается на индекс. использовать

if(i>= data.size())
    break;

3) Пожалуйста, покажите содержимое "0com.txt" для дальнейшей отладки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...