Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   mpq архивы (http://forum.oszone.net/showthread.php?t=127492)

Malfatto 01-01-2009 04:08 994873

mpq архивы
 
Игры blizzard используют архивы mpq. Как я знаю, для распаковки используется библиотека storm.dll. Как с ней работать в delphi и где её взять (а то, возможно, у меня в папке с вариком старая версия)?

Delirium 08-01-2009 03:23 1000206

Ну а если попробовать подключить эту библиотеку в проект?

DedAlex 08-01-2009 10:44 1000309

Хамяг, есть StormLib, там правда на С, но есть описание всех функций storm.dll.

Malfatto 12-01-2009 04:06 1004532

Delirium, это я и хотел. Но как я от туда возьму функции, не зная, как их использовать?

DedAlex, читал на сайте автора, но так и не разобрался, ибо С не знаю,

Delirium 12-01-2009 04:22 1004538

Хамяг, чет я не понимаю, на ссылке в 3 посте дано описание всех функций. Какая разница какой там язык, смысл то функции все равно одинаков. Пример с ссылки:
Цитата:

SFileCloseArchive
Ordinal number for Diablo 1.00 : 63 (0x03F)
Ordinal number for StarCraft : 252 (0x0FC)

Function SFileCloseArchive closes an open archive. - закрываем открытый архив
BOOL WINAPI SFileOpenArchive(
HANDLE hMPQ // Handle of open archive - указатель открытого архива
);
Parameters
hMPQ
[in] Handle of open archive. Must be a handle obtained by a call of SFileOpenArchive or SFileCreateArchiveEx. - указатель, берется вызовом функции SFileOpenArchive.
Return value - возвращаемое значение

When the function succeeds, it returns nonzero and the arhive is closed. If fails, function returns FALSE. More informations about the error can be obtained from return value of GetLastError().
Remarks

If the archive was modified since it was open, the function implemented in StormLib also updates the MPQ header, hash table and block table. - если архив был изменен после открытия, функция обновит заголовок MPQ, хеш таблицу и таблицу блокировок
Вам надо подключить библиотеку в проект(не знаю как в Делфи, а в .NET добавляется reference на объект и вперед), и пользоваться функциями, прочитав их описание на странице.

pva 12-01-2009 14:47 1005001

в делфи надо создать заголовочный файл *.pas, в котором в секции interface прописаны функции и указано, в какой они библиотеке. Пример:
Код:

unit Azimuth;

interface

uses Windows;

// Открытие (Инициализация) библиотеки
function OpenDLL(OpName : PChar; // Имя кассира
                    Psw : PChar; // Пароль передачи данных
                DevName : PChar; // имя последовательного порта
                FlagOEM : Integer) : Integer; stdcall; // 0 - есть перекодировка, 1- нет

function OpenDLL; external 'AZIMUTH.DLL';

implementation

end.


Malfatto 12-01-2009 15:10 1005032

Спасибо, буду пробовать :) Потом доложу


Время: 00:30.

Время: 00:30.
© OSzone.net 2001-