Russian Qt Forum
Ноябрь 26, 2024, 12:23
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Запись строки в начало QFile
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Запись строки в начало QFile (Прочитано 10999 раз)
WOLF
Гость
Запись строки в начало QFile
«
:
Август 07, 2013, 18:07 »
Доброго времени суток! Необходимо хранить журнал сообщений и по кнопке выводить его на экран. Решил использовать обычный .txt через QFile. Хочу сделать,чтобы последние сообщения были вверху. И появился вопрос - как записать строку в начало файла? Если открывать через QIODevice::Append, то всё пишется в конец файла, seek() как я понял не срабатывает.
Может быть какой-то лучший способ хранения сообщений предложите?
Записан
mutineer
Гость
Re: Запись строки в начало QFile
«
Ответ #1 :
Август 07, 2013, 18:19 »
Дописывай в конец. Чтобы записать в начало надо открыть файл на запись и сделать seek(), но при этом ты сотрешь старое содержимое
Записан
WOLF
Гость
Re: Запись строки в начало QFile
«
Ответ #2 :
Август 07, 2013, 18:33 »
Цитата: mutineer от Август 07, 2013, 18:19
Дописывай в конец. Чтобы записать в начало надо открыть файл на запись и сделать seek(), но при этом ты сотрешь старое содержимое
Но потом тогда строки придётся в обратном порядке выводить...
Я думал сделать так: скопировать в поток текущее содержимое, потом со стирание записать новую строку в файл и после этого открыть его через Append и дописать в конец то, что в потоке сохранил, но там из потока вместо текста краказяблы пишутся...
А как можно строки выводить в обратном порядке тогда из QFile? Или может есть что-то, помимо QFile, куда можно писать в начало?
Записан
mutineer
Гость
Re: Запись строки в начало QFile
«
Ответ #3 :
Август 07, 2013, 18:37 »
Считать их в QStringList и перемешивать его как угодно
Или сразу добавлять в лист при помощи prepend
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Запись строки в начало QFile
«
Ответ #4 :
Август 07, 2013, 18:38 »
в потоке нельзя ничего сохранить.
можешь считать все строки в QStringList, дописать нужную строку в начало списка и сохранить строки списка в файл.
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
WOLF
Гость
Re: Запись строки в начало QFile
«
Ответ #5 :
Август 07, 2013, 19:54 »
А считывать через readData или readLineData? я так понимаю считывать построчно и каждую новую строку отправлять в QStringList? А до какого момента читать, как узнать сколько всего строк в файле?
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Запись строки в начало QFile
«
Ответ #6 :
Август 07, 2013, 20:11 »
readLine(). пример как прочитать содержимое файла построчно есть в документации QFile.
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
WOLF
Гость
Re: Запись строки в начало QFile
«
Ответ #7 :
Август 07, 2013, 20:18 »
Спасибо, а то сегодня всю голову сломал с QDataStream, пытаясь склонить его к чтению) завтра попробую)
«
Последнее редактирование: Август 07, 2013, 20:20 от WOLF
»
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Запись строки в начало QFile
«
Ответ #8 :
Август 07, 2013, 21:38 »
обычный текст надо было читать с помощью QTextStream тогда уж. QDataStream больше для чтения «двоичных» данных подоходит.
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
WOLF
Гость
Re: Запись строки в начало QFile
«
Ответ #9 :
Август 07, 2013, 21:56 »
Буду пробывать c QStringList, посмотрим что получится
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Запись строки в начало QFile
«
Ответ #10 :
Август 08, 2013, 13:18 »
Цитата: WOLF от Август 07, 2013, 18:07
Хочу сделать,чтобы последние сообщения были вверху. И появился вопрос - как записать строку в начало файла? Если открывать через QIODevice::Append, то всё пишется в конец файла, seek() как я понял не срабатывает.
Может быть какой-то лучший способ хранения сообщений предложите?
Без затей писать в конец файла, а выводить в обратном порядке (считав все в QStringList)
Записан
WOLF
Гость
Re: Запись строки в начало QFile
«
Ответ #11 :
Август 08, 2013, 19:03 »
Сегодня попробывал считать всё в QStringList, записать в файл новую строку и в конец дописать обратно из QStringList. получилось очень легко и удобно
Всем большое спасибо за помощь)
Записан
mutineer
Гость
Re: Запись строки в начало QFile
«
Ответ #12 :
Август 09, 2013, 10:05 »
только с ростом файла запись будет все медленее и медленее и жрать все больше памяти
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...