Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись файлов!!! 
:(
    Опции темы
Fighter
Дата 9.1.2005, 03:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



Вы наверное играли в такие игры как Diablo II и Warcraft III. Компания Blizzard все необходимые файлы к своим играми "тщательно скрывает" в файлах типа MPQ. Как самому сделать что-нибудь подобное? Например, в ListBox'e я выбрал три файла
1. Music.mp3
2. Photo.jpg
3. Text.txt.
Все эти три файла объеденены в один файл с именем datafile.dat.

Потом я открываю файл datafile.dat и у меня в ListBox'e появляются эти файлы:
1. Music.mp3
2. Photo.jpg
3. Text.txt.
причем, если я щелкну на Music.mp3 то начнется проигрывание музыки, если на Photo.jpg то откроется картинка в моей программе или сама Windows откроет её, ну соответственно если щелкну по Text.txt, то либо запустится Блокнот с текстом программы, либо текст откроет моя программа.

Подскажите пожалуйста как это сделать?
PM MAIL   Вверх
En_t_end
Дата 9.1.2005, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Fighter
Зачем темы расплодил?
Обьясняю подробно алгоритм...
ИМХО...
Берёшь первый файл, открываешь его в своём коде, как двоичный...узнаешь каким он был размером в байтах, ставишь первые байты, которые указывают на размер файла, записываешь далее сам файл в datafile.dat, надеюсь алгоритм считывания записи по-байтово расписывать не надо smile ?, если тебе надо записать новый файл, допустим 2. Photo.jpg, то опять же узнаешь его размер и пишешь, как двоичный всё тоже..........., естсесственно, если файл текствой, открываешь, как текстовой.
А вот тут уже интереснее, как проиграть или запустить ? smile, воспользуемся стандартной папкой TEMP, в сис. дир. виндузы...
Ах да ещё полезно и нужно, в начале datafile.dat указывать название запакованных файлов... читаем первые байты в твоём файле, анализируем... принимаем к сведению, читаем после информационных байтов до следующего инф. файла или столько байт, сколько занимал нужный файл... записываем извелёкшийся файл в TEMP, соблюдая правила имен и разрешений для вынды... запускаем из тэмпа creatprocess'ом нужный файл, и радуемся smile smile smile

ЗЫ зачем велосипед изобретаешь smile ?, все паковщики по такому принципу работают, ты уже первым не будешь... запускаем winrar, создаем любой архив без сжатия из нескольких файлов... и юзаем на здоровье...
PM MAIL ICQ Skype GTalk Jabber   Вверх
_hunter
Дата 9.1.2005, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



перед запуском такой программы замускаем filemon, смотрим что/куда прога сохраняет и переписываем нужные файлы.
смысл такой защиты?

что Diablo II что Warcraft III файлы используют сами, а если винду просить...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Fighter
Дата 10.1.2005, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



Это не защита, это просто для удобства!!! Вот пример, предположим в какой-нибудь игре у меня 2000 файлов, каждый пусть занимает по 2 кб (для примера), а размер твоего харда 80 Гб, размер кластера в нем 32Кб и поэтому потери информации будет в 16 раз больше, а если все файлы содержатся в одном, то тогда потеря будет не больше 32 Кб.
PM MAIL   Вверх
chipset
Дата 10.1.2005, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 165



Цитата(Fighter @ 9.1.2005, 15:37)
Вот пример, предположим в какой-нибудь игре у меня 2000 файлов, каждый пусть занимает по 2 кб (для примера), а размер твоего харда 80 Гб, размер кластера в нем 32Кб и поэтому потери информации будет в 16 раз больше, а если все файлы содержатся в одном, то тогда потеря будет не больше 32 Кб.

Нет. В FAT32 размер кластера - 4 кб.
..
В таких случаях обычно запихивают все в контейнер STL и сериализуют boost::serialization'ом.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Fighter
Дата 10.1.2005, 03:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



Это смотря на каких винтах. Вообще это легко проверить, вот я щас вот создал текстовый документ и ввел в него один символ. По идее размер документа 1 байт, что верно, но если файл может занимать один кластер, но в одном кластере не может быть два файла, поэтому если размер файла меньше размера кластера, то на диске все равно занимается место размером в кластер. Ну так вот, я сохранил этот текстовый документ и смотрю его свойства (у меня HD 60 Гб). Меня интересует следующее:

Размер: 1 байт, 32 768 байт занято.
32 768 - вот оно, вот он размер кластера у меня на HD в 60 Гб. Но я знаю что в NTFS можно выбирать размер кластера. А можешь поподробнее про boost::serialization.
PM MAIL   Вверх
chipset
Дата 10.1.2005, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 165



Цитата(Fighter @ 9.1.2005, 16:36)
А можешь поподробнее про boost::serialization.

http://boost.org/libs/serialization/doc/index.html


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Fighter
Дата 10.1.2005, 03:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



А можете тогда ссылку кинуть на какой-нибудь сайт (или несколько сайтов) где можно будет скачать какие-нибудь MFC классы, ActiveX, VCL компоненты для работы с архивами.
PM MAIL   Вверх
Helicopterr
Дата 1.10.2005, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: нет
Всего: 3



да вот у кого есть ссылка на качнуть MFC классы?


--------------------
people can fly
PM MAIL   Вверх
szz
Дата 10.10.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Вот например неплохая библиотека:
http://www.artpol-software.com/index_zip.html

Она довольно быстрая и хорошо, продуманно написана


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.