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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: динамическое создание файла ресурсов  (Прочитано 9765 раз)
Pixel
Гость
« : Октябрь 30, 2012, 13:10 »

как создать файл в который можно динамически поместить другие файлы? например: пользователь выбирает файлы с жесткого диска, эти файлы помещаются в некий архив, который сохраняется на диске в указанном месте, чтобы потом эти файлы другой пользователь мог извлечь к примеру.
Записан
Bepec
Гость
« Ответ #1 : Октябрь 30, 2012, 13:41 »

Это называется архив. Поместить файлы в архив можно архиватором.

Так же под ваше описание подпадает папка Веселый
Записан
Pixel
Гость
« Ответ #2 : Октябрь 30, 2012, 15:38 »

мне нужно написать программу, которая будет создавать свои архивы. Именно файлом, а не папкой
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Октябрь 30, 2012, 15:45 »

мне нужно написать программу, которая будет создавать свои архивы. Именно файлом, а не папкой

Если сжатия не нужно, используй tar архивы. Их формат можно найти, как и написать простейшие [де]архиваторы.
Записан
Bepec
Гость
« Ответ #4 : Октябрь 30, 2012, 15:57 »

на linux папки и файлы это одно и то же как бэ Улыбающийся

PS простейший архиватор. Их дофига.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Октябрь 30, 2012, 17:59 »

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

Код
C++ (Qt)
struct MyTag {
int mID;              // ID тега (пока только 'FILE')
qint64 mTagSize; // размер тега
QString mName;  // имя файла
qint64 mFileSize;  // размер
QDate mDate;   // дата
int mFlag;        // флаги (напр read-only)
};
 
Например извлечь

- открываете файл архива и считываете MyTag. Имя не подходит - делаете seek на след тег. Подходит - считываете содержимое которое записано за тегом, устанавливаете дату и флаги для извлеченного файла. Остальные операции (добавление, удаление и др) столь же очевидны.
Записан
Pixel
Гость
« Ответ #6 : Октябрь 30, 2012, 21:12 »

Igors, спасибо! не подскажете где можно по подробней почитать про "seek" (поиск и чтение данных из файла)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Октябрь 30, 2012, 21:28 »

не подскажете где можно по подробней почитать про "seek" (поиск и чтение данных из файла)
В букваре (Assistent). И не травмируйте форум такими квешнзами  Плачущий
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #8 : Ноябрь 01, 2012, 07:35 »

При наличии в структуре поля mName в виде QString так просто считать/записать MyTag не получится.
Записан
Bepec
Гость
« Ответ #9 : Ноябрь 01, 2012, 08:10 »

Ну почему же. Сделать ему фиксированную длину аля 1024 символа.

Больше смысла нет - имя файла в W рубится на 1024 символах в длине пути. К такому каталогу ни одна программа не сможет обратиться.

PS в линуксе незнаю.
Записан
Serr500
Гость
« Ответ #10 : Ноябрь 01, 2012, 08:54 »

Больше смысла нет - имя файла в W рубится на 1024 символах в длине пути. К такому каталогу ни одна программа не сможет обратиться.
Это в ANSI-версиях функций. В Unicode-версиях (с суффиксом W) максимальная длина имени около 32000 символов.
Записан
Bepec
Гость
« Ответ #11 : Ноябрь 01, 2012, 09:39 »

to Serr500

Извиняюсь я конечно, но Unicode версии ОС Windows(W7) я незнаю. Однако я знаю, что если создать не совсем корректными методами каталог с путём/названием больше 1024, то эксплорер отказывается с ним работать, как и 95% программ. Удаление/открытие/обращение к файлу/каталогу прерывается.

Если даже шелл ОС не работает с такими папками, то... То нефиг так делать.
Записан
Serr500
Гость
« Ответ #12 : Ноябрь 01, 2012, 10:25 »

to Верес

Согласен. Однако, моё уточнение относилось к фразе
К такому каталогу ни одна программа не сможет обратиться.
Всё-таки 5% программ может.  Подмигивающий

Unicode версии ОС Windows(W7) я незнаю.
А такой версии нет. Просто большинство функций WinAPI с аргументами-строками имеют два варианта - ANSI и Unicode. Обычно используются стандартные хидеры M$, а в них имена функций - это макросы. Там FunctionName в зависимости от включенного/выключенного Unicode транслируется либо в FunctionNameA (ANSI), либо в FunctionNameW (Unicode).
Записан
Bepec
Гость
« Ответ #13 : Ноябрь 01, 2012, 10:34 »

Нууу... Скажем так - программы исключительно перестрахованных программистов, которыми пользуются перестрахованные программисты Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #14 : Ноябрь 01, 2012, 10:58 »

При наличии в структуре поля mName в виде QString так просто считать/записать MyTag не получится.
Поэтому 2 поля длины  Улыбающийся
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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