Russian Qt Forum

Qt => Вопросы новичков => Тема начата: bk-201 от Май 21, 2012, 19:29



Название: Работа с файлами. Читать большой файл.
Отправлено: 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. Жду вашей критики и, конечно же, советов  :)


Название: Re: Работа с файлами. Читать большой файл.
Отправлено: Bepec от Май 21, 2012, 19:38
Sql  в помощь. Быстродействие тебе тут не нужно, а вот для работы с многосотенными значениями - как раз.


Название: Re: Работа с файлами. Читать большой файл.
Отправлено: bk-201 от Май 21, 2012, 19:40
Sql  в помощь. Быстродействие тебе тут не нужно, а вот для работы с многосотенными значениями - как раз.

Я с Sql совершенно не знаком. А разбираться времени совсем нету....


Название: Re: Работа с файлами. Читать большой файл.
Отправлено: alexis031182 от Май 21, 2012, 19:41
Зачем так? Просто XML через QDomDocument. Если задач ну о-очень много, то тот же QXml


Название: Re: Работа с файлами. Читать большой файл.
Отправлено: bk-201 от Май 21, 2012, 19:49
Зачем так? Просто XML через QDomDocument. Если задач ну о-очень много, то тот же QXml

Да, это уже значительно интереснее) Спасибо)


Название: Re: Работа с файлами. Читать большой файл.
Отправлено: Bepec от Май 21, 2012, 22:32
По секрету скажу. sqlite изучается за 2 минуты. Создание базы + запись в неё - 2 минуты.

Понимание языка SQL  и запроса SELECT  - 20 минут.

Профит.


Название: Re: Работа с файлами. Читать большой файл.
Отправлено: fuCtor от Май 22, 2012, 06:12
Sql  в помощь. Быстродействие тебе тут не нужно, а вот для работы с многосотенными значениями - как раз.

Я с Sql совершенно не знаком. А разбираться времени совсем нету....

За время написания этого поста можно было бы разобраться как создать базу, как писать/читать. Сложных запросов не требуется поэтому базовых знаний, которые можно подчерпнуть в любом справочнике хватит.

Например, выбрать все задачи, при условии что они хранятся в таблице tasks:
SELECT * FROM tasks;
Выбрать конкретную задачу:
SELECT * FROM tasks WHERE id = 100;

и так далее =)