Russian Qt Forum
Ноябрь 01, 2024, 09:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFile чтение i-ой строки из файла.  (Прочитано 18174 раз)
G-virus
Гость
« : Декабрь 19, 2009, 21:48 »

Всем привет! Вопрос такой. Как читать из текстового файла строку с определенным номером. например readLine(20) означает что должен считать двадцатую строку из текстового файла. И еще вопрос. Имеется объект  Combo Box. Как заполнять каждую строку этого объекта без цикла, читая целиком текстовый файл, допустим в файле 20 строк, и при считывании нужно первую строку файла засунуть в первый Item этого объекта и т.д.
Заранее Спасибо! Улыбающийся
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Декабрь 19, 2009, 21:55 »

Этот вопрос 100% уже поднимался на форуме, поищи.
Нельзя прочитать 20-ю строчку файла, не прочитав первые 19, так что придется делать так:
Код
C++ (Qt)
for (int i = 0; i < 20; i++)
 stream.readLine();
 
QString str = stream.readLine();
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
G-virus
Гость
« Ответ #2 : Декабрь 19, 2009, 21:57 »

Этот вопрос 100% уже поднимался на форуме, поищи.

Может плохо искал, но ненашел( А как быть с Combo Box?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Декабрь 19, 2009, 22:00 »

Чем тебе не нравится заполнение в цикле?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
G-virus
Гость
« Ответ #4 : Декабрь 19, 2009, 22:02 »

Чем тебе не нравится заполнение в цикле?

Ну я думал может бывают более высокоуровневые функции. Ну и да ладно =) спасибо
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Декабрь 19, 2009, 22:05 »

Так и нужно, в цикле считываешь строку и закидываешь ее в комбобокс.
Можно в цикле считывать строки в QStringList, а потом сразу добавить весь QStringList в комбобокс, но это то же самое.
Кстати, что-то у меня тоже не получилось поиском найти тему, хотя точно была. Бывает. Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
G-virus
Гость
« Ответ #6 : Декабрь 19, 2009, 22:12 »

а какая функция у QFile пропустить строку? Улыбающийся например чтобы считать 20 строк и занести их в в комбо бокс код такой должен быть:
Код
C++ (Qt)
if (file.isReadable())
   {
          while (!file.atEnd()){
           ui->CommandList->setItemText(count, file.readLine());
         file.пропустить_строку                                                // Ну или следующая_строка
           count++;
       }
       file.close();
 
Записан
QCasper
Гость
« Ответ #7 : Декабрь 19, 2009, 22:23 »

combo->addItems(QString(file.readAll()).split("\n")); - можно так попробовать
Записан
G-virus
Гость
« Ответ #8 : Декабрь 19, 2009, 22:30 »

О! Спасибо! Заработало!  Улыбающийся
Записан
kenso
Гость
« Ответ #9 : Декабрь 24, 2009, 19:06 »

а если файл не текстовый, как прочитать i-ую строку?
Записан
BRE
Гость
« Ответ #10 : Декабрь 24, 2009, 19:08 »

а если файл не текстовый, как прочитать i-ую строку?
А что называется строкой в не тестовом файле?
Записан
kenso
Гость
« Ответ #11 : Декабрь 24, 2009, 20:09 »

Цитировать
while (!file.atEnd())
        {
            QByteArray line = file.readLine();
            qDebug()<<line;
        }
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.09 секунд. Запросов: 22.