Russian Qt Forum
Ноябрь 24, 2024, 16:41
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Работа с файлами. Читать большой файл.
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Работа с файлами. Читать большой файл. (Прочитано 2920 раз)
bk-201
Гость
Работа с файлами. Читать большой файл.
«
:
Май 21, 2012, 19:29 »
Всем привет!
Пишу курсовую (ежедневник) и добрался до самого интересного момента. А именно...
Задачи конкретного пользователя хранятся в отдельном файле (например: user1.task). Таких задач может быть как 1-2, так и 100-200 (ну или еще больше).
Каждая задача должна содержать следующие поля:
1) дату, когда создана задача
2) дату, когда задача становится неактивной (или вобще удаляется из списка)
3) дату напомининия
4) и, разумеется, сама задача, которую поставил пользователь
Вопрос заключается в следующем:
1) как огранизовать этот файл (его структуру),
2) как обеспечить произвольный доступ к записям (т.е. какую запись захотел пользователь посмотреть, ту и "выдергиваем" из файла),
3) и как сделать редактирование произвольной записи (т.е. удалить задчу из середины файла и написать на её месте другую (размены записей разные))
Вот идея, которая мне на ум пришла (к сожалению, реализованного варианта нет):
1) структура файла
<time_create>
здесь дата создания записи
</time_create>
<time_dead>
здесь дата, когда напоминание становится неактивно
</time_dead>
<time_rem>
здась дата, когда нужно напомнить пользователю
</time_rem>
<task_description>
здесь напоминание пользователя (может содержать n строк)
</task_description>
2) произвольный доступ к записям
2.1) Создать временный файл
2.2) Находить в файле пользователя строку, которая начинается с
<time_create>
и заканчиватеся
</time_create>
2.3) Как только было такое совпадение, записывать это строку и байт, с которого она начинается во временный файл
3) этот пункт еще не продумывал
p.s.
Жду вашей критики и, конечно же, советов
Записан
Bepec
Гость
Re: Работа с файлами. Читать большой файл.
«
Ответ #1 :
Май 21, 2012, 19:38 »
Sql в помощь. Быстродействие тебе тут не нужно, а вот для работы с многосотенными значениями - как раз.
Записан
bk-201
Гость
Re: Работа с файлами. Читать большой файл.
«
Ответ #2 :
Май 21, 2012, 19:40 »
Цитата: Bepec от Май 21, 2012, 19:38
Sql в помощь. Быстродействие тебе тут не нужно, а вот для работы с многосотенными значениями - как раз.
Я с Sql совершенно не знаком. А разбираться времени совсем нету....
Записан
alexis031182
Гость
Re: Работа с файлами. Читать большой файл.
«
Ответ #3 :
Май 21, 2012, 19:41 »
Зачем так? Просто XML через QDomDocument. Если задач ну о-очень много, то тот же QXml
Записан
bk-201
Гость
Re: Работа с файлами. Читать большой файл.
«
Ответ #4 :
Май 21, 2012, 19:49 »
Цитата: alexis031182 от Май 21, 2012, 19:41
Зачем так? Просто XML через QDomDocument. Если задач ну о-очень много, то тот же QXml
Да, это уже значительно интереснее) Спасибо)
Записан
Bepec
Гость
Re: Работа с файлами. Читать большой файл.
«
Ответ #5 :
Май 21, 2012, 22:32 »
По секрету скажу. sqlite изучается за 2 минуты. Создание базы + запись в неё - 2 минуты.
Понимание языка SQL и запроса SELECT - 20 минут.
Профит.
Записан
fuCtor
Гость
Re: Работа с файлами. Читать большой файл.
«
Ответ #6 :
Май 22, 2012, 06:12 »
Цитата: enot от Май 21, 2012, 19:40
Цитата: Bepec от Май 21, 2012, 19:38
Sql в помощь. Быстродействие тебе тут не нужно, а вот для работы с многосотенными значениями - как раз.
Я с Sql совершенно не знаком. А разбираться времени совсем нету....
За время написания этого поста можно было бы разобраться как создать базу, как писать/читать. Сложных запросов не требуется поэтому базовых знаний, которые можно подчерпнуть в любом справочнике хватит.
Например, выбрать все задачи, при условии что они хранятся в таблице tasks:
SELECT * FROM tasks;
Выбрать конкретную задачу:
SELECT * FROM tasks WHERE id = 100;
и так далее =)
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...