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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QIODevice::ReadWrite и QIODevice::WriteOnly  (Прочитано 4306 раз)
blood_shadow
Гость
« : Июль 27, 2010, 15:24 »

Добрый день!
Недавно начал программировать под Qt и наткнулся на несколько непонятных мне вещей:
1. Ф-ция QString val::loadInputText() const считывает текст с файла C:\\String_value\\input.txt и записует его в текстовое поле textIn, затем по нажатию кнопки "Save" вызывается ф-ция QString val::saveOnFile() которая сохраняет измененный текст с текстового поля в тот же файл, вопрос в следующем - почему если в ф-ции QString val::saveOnFile() записать inputFile->open(QIODevice::ReadWrite); программа перестает правильно работать, а именно не дает записать изменения в файл после удаления нескольких символов(например если в файле строка "In forest many trees" отредактировать ее до "In forest many" всеравно окажется в файле "In forest many trees")?

Код:

QString val::loadInputText() const
{
        QFile *inputFile = new QFile("C:\\String_value\\input.txt");
        inputFile->open(QIODevice::ReadWrite);

        QTextStream in(inputFile);
        QString inLine = in.readAll();
        inputFile->close();
        delete inputFile;

        textIn->setPlainText(inLine);
        return inLine;
}

QString val::saveOnFile()
{
    QFile *inputFile = new QFile("C:\\String_value\\input.txt");
    [color=yellow]inputFile->open(QIODevice::WriteOnly);[/color]

    QTextStream in(inputFile);
    in.setCodec("Windows-1251");
    QString inLine = textIn->toPlainText();

    in << inLine;
    inputFile->close();

    delete inputFile;

    return inLine;
}
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Июль 27, 2010, 15:33 »

Если файл открыт ReadWrite, его содержимое не удаляется. Вы просто пишете с 0-го байта и имеете "незатертый хвост"  Улыбающийся
Записан
blood_shadow
Гость
« Ответ #2 : Июль 27, 2010, 15:55 »

Если файл открыт ReadWrite, его содержимое не удаляется. Вы просто пишете с 0-го байта и имеете "незатертый хвост"  Улыбающийся
то есть в таком режиме текст пишется поверху?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Июль 27, 2010, 16:07 »

то есть в таком режиме текст пишется поверху?
да, если файловый указатель (позиция в файле) меньше его размера
Записан
blood_shadow
Гость
« Ответ #4 : Июль 27, 2010, 16:17 »

то есть в таком режиме текст пишется поверху?
да, если файловый указатель (позиция в файле) меньше его размера
Все стало ясно спасибо большое  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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