crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Получение части файла и вывод на экран
Artem
  опции профиля:
сообщение 28.1.2013, 17:19
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 27.1.2013
Пользователь №: 3688

Спасибо сказали: 0 раз(а)




Репутация:   0  


Хочу из файла получить промежуток между # и #!.
Но почему то не получается

    QFile file("pro.txt");
    QLabel l;
    QString str, str2;
    if (file.open(QIODevice::ReadOnly))
    {
         str.append(file.readAll());
         int put=0;
         for (int i=0; str.length(); i++){
             if ((str[i]=='#') && (put=1)) {
                 put=0;
                 break;
             }
             if (put==1) str2.append(str[i]);
             if ((str[i]=='#') && (str[i+1] =='!')) put=1;
         }
         l.setText(str2);
         text->addWidget(&l);
    }


    lab1->setLayout(text);

    lab1->show();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 28.1.2013, 17:36
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Похоже что по коду вы берете промежуток между #! и #.
У вас в строку добавляется пока put == 1. А put приравнивается к 1 по условию ((str[i]=='#') && (str[i+1] =='!')). Условия надо переставить немного.

Сообщение отредактировал ilyabvt - 28.1.2013, 17:40
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Artem
  опции профиля:
сообщение 28.1.2013, 18:22
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 27.1.2013
Пользователь №: 3688

Спасибо сказали: 0 раз(а)




Репутация:   0  


не условие соответствует. Я просто не правильно написал между #! и #.
У меня на экран почему-то ничего не выводиться. Думал что append не правильно применяю, прочитал документацию - все так. В чем ошибка не знаю

#Pro##Of#!Word#=C:\cpp#ico111RU
из этой строки хочу вывести Word
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 28.1.2013, 20:11
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Вместо:
if ((str[i]=='#') && (put=1))

Попробуйте:
if ((str[i]=='#') && (put==1))


Да и заголовок цикла лучше подправить:
for (int i=0; str.length(); i++)

for (int i=0; i<str.length(); i++)


Сообщение отредактировал ilyabvt - 28.1.2013, 20:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Artem
  опции профиля:
сообщение 28.1.2013, 21:02
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 27.1.2013
Пользователь №: 3688

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо за исправления!

Все равно не выводит текст на форму.

ошибка с кодировкой наверное.

Да. Действительно ошибка с кодировкой, поэтому не выводило
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 28.1.2013, 21:04
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


А если сделать:
l.setText(str);

то оригинальная строка выводится?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Artem
  опции профиля:
сообщение 28.1.2013, 22:08
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 27.1.2013
Пользователь №: 3688

Спасибо сказали: 0 раз(а)




Репутация:   0  


да так она первоначально мне весь текст из файла выводила

только теперь у меня проблема вывода русского текста
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 29.1.2013, 8:42
Сообщение #8


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Цитата(Artem @ 28.1.2013, 23:08) *
да так она первоначально мне весь текст из файла выводила

только теперь у меня проблема вывода русского текста

Лучше использовать QTextStream, он умеет и юникод и кодировки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
nikita
  опции профиля:
сообщение 29.1.2013, 9:01
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 34
Регистрация: 19.10.2012
Пользователь №: 3570

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(Artem @ 28.1.2013, 22:08) *
да так она первоначально мне весь текст из файла выводила

только теперь у меня проблема вывода русского текста


Для этого используй l.setText(trUtf8(str2));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.6.2022, 8:29