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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с файлами. Читать большой файл.  (Прочитано 2923 раз)
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
Гость
« Ответ #1 : Май 21, 2012, 19:38 »

Sql  в помощь. Быстродействие тебе тут не нужно, а вот для работы с многосотенными значениями - как раз.
Записан
bk-201
Гость
« Ответ #2 : Май 21, 2012, 19:40 »

Sql  в помощь. Быстродействие тебе тут не нужно, а вот для работы с многосотенными значениями - как раз.

Я с Sql совершенно не знаком. А разбираться времени совсем нету....
Записан
alexis031182
Гость
« Ответ #3 : Май 21, 2012, 19:41 »

Зачем так? Просто XML через QDomDocument. Если задач ну о-очень много, то тот же QXml
Записан
bk-201
Гость
« Ответ #4 : Май 21, 2012, 19:49 »

Зачем так? Просто XML через QDomDocument. Если задач ну о-очень много, то тот же QXml

Да, это уже значительно интереснее) Спасибо)
Записан
Bepec
Гость
« Ответ #5 : Май 21, 2012, 22:32 »

По секрету скажу. sqlite изучается за 2 минуты. Создание базы + запись в неё - 2 минуты.

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

Профит.
Записан
fuCtor
Гость
« Ответ #6 : Май 22, 2012, 06:12 »

Sql  в помощь. Быстродействие тебе тут не нужно, а вот для работы с многосотенными значениями - как раз.

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

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

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

и так далее =)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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