Название: Запись строки в начало QFile Отправлено: WOLF от Август 07, 2013, 18:07 Доброго времени суток! Необходимо хранить журнал сообщений и по кнопке выводить его на экран. Решил использовать обычный .txt через QFile. Хочу сделать,чтобы последние сообщения были вверху. И появился вопрос - как записать строку в начало файла? Если открывать через QIODevice::Append, то всё пишется в конец файла, seek() как я понял не срабатывает.
Может быть какой-то лучший способ хранения сообщений предложите? Название: Re: Запись строки в начало QFile Отправлено: mutineer от Август 07, 2013, 18:19 Дописывай в конец. Чтобы записать в начало надо открыть файл на запись и сделать seek(), но при этом ты сотрешь старое содержимое
Название: Re: Запись строки в начало QFile Отправлено: WOLF от Август 07, 2013, 18:33 Дописывай в конец. Чтобы записать в начало надо открыть файл на запись и сделать seek(), но при этом ты сотрешь старое содержимое Но потом тогда строки придётся в обратном порядке выводить...Я думал сделать так: скопировать в поток текущее содержимое, потом со стирание записать новую строку в файл и после этого открыть его через Append и дописать в конец то, что в потоке сохранил, но там из потока вместо текста краказяблы пишутся... А как можно строки выводить в обратном порядке тогда из QFile? Или может есть что-то, помимо QFile, куда можно писать в начало? Название: Re: Запись строки в начало QFile Отправлено: mutineer от Август 07, 2013, 18:37 Считать их в QStringList и перемешивать его как угодно
Или сразу добавлять в лист при помощи prepend Название: Re: Запись строки в начало QFile Отправлено: kambala от Август 07, 2013, 18:38 в потоке нельзя ничего сохранить.
можешь считать все строки в QStringList, дописать нужную строку в начало списка и сохранить строки списка в файл. Название: Re: Запись строки в начало QFile Отправлено: WOLF от Август 07, 2013, 19:54 А считывать через readData или readLineData? я так понимаю считывать построчно и каждую новую строку отправлять в QStringList? А до какого момента читать, как узнать сколько всего строк в файле?
Название: Re: Запись строки в начало QFile Отправлено: kambala от Август 07, 2013, 20:11 readLine(). пример как прочитать содержимое файла построчно есть в документации QFile.
Название: Re: Запись строки в начало QFile Отправлено: WOLF от Август 07, 2013, 20:18 Спасибо, а то сегодня всю голову сломал с QDataStream, пытаясь склонить его к чтению) завтра попробую)
Название: Re: Запись строки в начало QFile Отправлено: kambala от Август 07, 2013, 21:38 обычный текст надо было читать с помощью QTextStream тогда уж. QDataStream больше для чтения «двоичных» данных подоходит.
Название: Re: Запись строки в начало QFile Отправлено: WOLF от Август 07, 2013, 21:56 Буду пробывать c QStringList, посмотрим что получится
Название: Re: Запись строки в начало QFile Отправлено: Igors от Август 08, 2013, 13:18 Хочу сделать,чтобы последние сообщения были вверху. И появился вопрос - как записать строку в начало файла? Если открывать через QIODevice::Append, то всё пишется в конец файла, seek() как я понял не срабатывает. Без затей писать в конец файла, а выводить в обратном порядке (считав все в QStringList)Может быть какой-то лучший способ хранения сообщений предложите? Название: Re: Запись строки в начало QFile Отправлено: WOLF от Август 08, 2013, 19:03 Сегодня попробывал считать всё в QStringList, записать в файл новую строку и в конец дописать обратно из QStringList. получилось очень легко и удобно :) Всем большое спасибо за помощь)
Название: Re: Запись строки в начало QFile Отправлено: mutineer от Август 09, 2013, 10:05 только с ростом файла запись будет все медленее и медленее и жрать все больше памяти
|