О библиотеке компонентов
Библиотека компонентов и функций для работы с файлами *.package (DBPF2) и *.Sims3Pack под Delphi 2009
О чем собственно идет речь
Собственно речь идет состоит в том, чтобы сделать библиотеку функций для работы с форматами данных Sims3. Писать будем на Object Pascal под Delphi, во-первых, чтобы не играться с .NET Frameworkом, Java RTE и прочими пакетами библиотек, во-вторых, потому что простые смертные не носящие свитеров, джинсов и бород обычно на C++ не пишут.
Для переноса под старые версии необходимо учесть, что Delphi 2009 использует Unicode, старые версии Ansi и изменить вызовы парсера XML, кроме того проблемы могут быть с типом UInt64 – 64 бит без знака и TBytes – динамическим массивом байт.
Текущая версия библиотеки 1.50
Пока нет:
- внутриблокового сжатия данных;
Есть:
- создание списка блоков для файлов package (DBPF v.2.0), sims3pack;
- добавление блоков для файлов package (DBPF v.2.0);
- извлечение блоков и работа с ними как с потоком байт;
- функции для работы с ресурсами STBL и PNG;
Нет и не будет:
- декодирования файлов с шифрованными заголовками (DBPP) – точнее, не будет входить в исходные коды их распространении;
Общие замечания и термины
О программировании
Об установке Delphi, Jedi и компонентов, а также по программированию на Object Pascal здесь не будет сказано ни слова – как известно интернет большой, гугль рулит, а времени как всегда не хватает. Может как-нибудь потом, хотя скорее всего в следующей жизни.
О файлах и потоках
Файлы Sims3 по сути представляют собой архивы и содержат:
- заголовок файла;
- содержание файла – индексную таблицу;
- секцию данных, состоящую из записей, которые могут быть сжатыми, а могут и не быть;
Главной особенностью файла в общем виде является то, что он где-то лежит, а нам с ним нужно работать (во всяком случае, очень бы этого хотелось). Поэтому в дальнейшем будет использоваться термин поток данных – как файл с механизмом доступа к нему. В Delphi реализацией потока служит класс TStream и его наследники. Дальше будет использоваться термины: первичный поток – поток содержащий файл, с которым ведется работа в данный момент, вторичный поток – поток, содержащий декодированную запись.
О работе с файлами и записями
Для пользовательских программ под Win32 доступно всего 2 Гб памяти, это не так много как может показаться, к тому же если программа будет полчаса распаковывать данные, а потом столько же запаковывать, никто ее создателя умным не назовет. Посему мораль – данные должны загружаться и декодироваться только при их запросе. Поскольку у Pascal с абстракцией под названием шаблон как-то не сложилось, поток придется создавать отдельно и затем передавать декодеру. Во избежание проблем, после создания потока доступ к нему должен осуществляться только через функции библиотеки, особенно, это касается его закрытия.
Библиотека реализует работу с записями через их массив, общие детали реализации формата файла – типа его заголовка и формата индексной таблицы скрыты от пользователя.
Что понадобится
- CodeGear Delphi 2009;
- JEDI Visual Component Library для компиляции примеров;
- собственно сама библиотека;
Об авторстве, правах и обязанностях
Все авторские права на программу данную библиотеку компонентов (далее библиотека) принадлежат автору AnriRS.- Данное лицензионное соглашение действует для всех версий библиотеки. Автор оставляет за собой право отменить действие данной лицензии для любой из следующих версий библиотеки.
- БИБЛИОТЕКА ПОСТАВЛЯЕТСЯ ПО ПРИНЦИПУ "AS IS". НИКАКИХ ГАРАНТИЙ НЕ ПРИЛАГАЕТСЯ И НЕ ПРЕДУСМАТРИВАЕТСЯ. ВЫ ИСПОЛЬЗУЕТЕ ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ НА СВОЙ РИСК. АВТОР НЕ БУДЕТ ОТВЕЧАТЬ НИ ЗА КАКИЕ ПОТЕРИ ИЛИ ИСКАЖЕНИЯ ДАННЫХ, ЛЮБУЮ УПУЩЕННУЮ ВЫГОДУ В ПРОЦЕССЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕПРАВИЛЬНОГО ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
- Вы можете свободно использовать, копировать, и создавать новые версии библиотеки при условии сохранения информации об авторстве исходной библиотеки и ссылки на портал prosims.ru.
- Права на названия торговых марок (The Sims и т.д.) принадлежат их владельцам, права на английские варианты теоретических статей принадлежат их авторам.
- Все остальные права, не предоставленные здесь явно, сохраняются за автором.
- Использование библиотеки означает, что вы понимаете положения настоящего лицензионного соглашения и согласны с ними.
- Если почему-либо вы не согласны с этим лицензионным соглашением вам необходимо удалить файлы библиотеки с ваших устройств хранения информации и прекратить ее использование