О библиотеке компонентов

О библиотеке компонентов
Автор: AnriRS

Библиотека компонентов и функций для работы с файлами *.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 для компиляции примеров;
  • собственно сама библиотека;

Об авторстве, правах и обязанностях


  1. Все авторские права на программу данную библиотеку компонентов (далее библиотека) принадлежат автору AnriRS.
  2. Данное лицензионное соглашение действует для всех версий библиотеки. Автор оставляет за собой право отменить действие данной лицензии для любой из следующих версий библиотеки.
  3. БИБЛИОТЕКА ПОСТАВЛЯЕТСЯ ПО ПРИНЦИПУ "AS IS". НИКАКИХ ГАРАНТИЙ НЕ ПРИЛАГАЕТСЯ И НЕ ПРЕДУСМАТРИВАЕТСЯ. ВЫ ИСПОЛЬЗУЕТЕ ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ НА СВОЙ РИСК. АВТОР НЕ БУДЕТ ОТВЕЧАТЬ НИ ЗА КАКИЕ ПОТЕРИ ИЛИ ИСКАЖЕНИЯ ДАННЫХ, ЛЮБУЮ УПУЩЕННУЮ ВЫГОДУ В ПРОЦЕССЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕПРАВИЛЬНОГО ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
  4. Вы можете свободно использовать, копировать, и создавать новые версии библиотеки при условии сохранения информации об авторстве исходной библиотеки и ссылки на портал prosims.ru.
  5. Права на названия торговых марок (The Sims и т.д.) принадлежат их владельцам, права на английские варианты теоретических статей принадлежат их авторам.
  6. Все остальные права, не предоставленные здесь явно, сохраняются за автором.
  7. Использование библиотеки означает, что вы понимаете положения настоящего лицензионного соглашения и согласны с ними.
  8. Если почему-либо вы не согласны с этим лицензионным соглашением вам необходимо удалить файлы библиотеки с ваших устройств хранения информации и прекратить ее использование

Скачать

The Sims 3

The Sims 2

The Sims

MySims

Sims-игры

Даты релизов

the_sims_3_store_saleshymn_bunnersimovod_3simovod2Журнал «Симовод»Prosims - магазин сувениров