Текст и вложения, какой формат файла сделать?

174
21 июля 2017, 03:49

Есть приложение на Qt представляющее из себя форму с текстовыми и числовыми полями, а так же возможностью загружать вложения (картинки, пдф и иные файлы весом до 500МБ и по сути не ограниченного количества).

Сейчас данные из формы сохраняются в JSON (бинарное представление Qt) и нужно ко всему этому сохранить вложения.

Думал сохранять данные формы в один файл, а вложения "вливать" во второй файл, прописывая в первом файле в соответствующих вложениям полям offset этого вложения из второго файла.

Таким образом (в сравнении с данными и вложениями в едином файле) при пересохранении текста, если его объем будет увеличен, не придется создавать новый файл и копировать туда все вложения, коих может быть вплоть до пары гигабайт, но два файла вместо одного видится мне не практичным (пользователь захочет записать файл на флешку и забудет "базу" вложений и тю-тю).

Как лучше сохранять всё это? Иметь два файла для единой сущности не представляется мне "красивым". Нормально ли что при каждом сохранении будет создаваться временный файл, в него писаться данные и копироваться все вложения ("шерстеть" диском на пару гигов каждый раз по-моему не "культурно")?

READ ALSO
auto как аргумент функции

auto как аргумент функции

Я знаю, что в стандарте C++ 14 возможно использовать ключевое слово auto при указании типа аргумента

374
(secret != guess) != заменяет оператору ==, как?

(secret != guess) != заменяет оператору ==, как?

Программа хорошо работает (secret != guess) почему знак != (не ровен) меняет свое предназначение ведь в программе по логике сгенерированое число нужно...

214
C++ Error E2293 )expected [требует правки]

C++ Error E2293 )expected [требует правки]

Какие бывают причины возникновения ошибки и как их решить? Пробавала подключить #include "vclh" проблемы не решило

186
Как в скрипте изменяющем ширину блоков по большему к результату добавить +1px

Как в скрипте изменяющем ширину блоков по большему к результату добавить +1px

Есть следующий скрипт изменяющий ширину определенных блоков на странице по большему:

285