PureBasic
UncompressPackMemory()
Синтаксис
Result = UncompressPackMemory(#Pack , *Buffer , Size [, PackedFilename$])
Описание
Распаковывает и помещает в выходной буфер памяти текущую запись архива, просматриваемую с помощью ExaminePack() и NextPackEntry().
Параметры
#Pack Номер, идентифицирующий файл архива, текущую запись которого требуется распаковать. *Buffer Адрес выходного буфера памяти, в который будут помещены распакованные данные. Size Размер выходного буфера памяти. PackedFilename$ (дополн.) Имя файла используемое в архиве для идентификации записи, которую требуется распаковать. Если этот параметр не указан, будет распакована текущая запись, просматриваемая с помощью ExaminePack() и NextPackEntry(). Если этот параметр указан, запись с данным именем становится текущей для функции NextPackEntry().
Возвращаемое значение
Возвращает размер распакованных данных, если операция распаковки и записи в буфер памяти прошла успешно, в противном случае -1.
Пример
UseZipPacker() ; Регистрируем в программе плагин с поддержкой сжатия Zip...
Define Size = 10
*Buffer= AllocateMemory(20)
If CreatePack(0, "c:\mycompressedfiles.zip") ; Создаёт архивный файл
AddPackMemory(0, *Buffer, Size, "1.txt") ; Сжимает 10 байт данных из *Buffer и помещает в архив.
AddPackMemory(0, *Buffer, Size, "2.txt")
AddPackMemory(0, *Buffer, Size, "3.txt")
ClosePack(0) ; Закрывает созданный архивный файл
EndIf
If OpenPack(0, "c:\mycompressedfiles.zip") ; Открываем файл архива.
If ExaminePack(0) ; Список всех записей...
UncompressPackMemory(0, *Buffer, Size, "2.txt") ; Распаковывает запись с именем "2.txt" в *Buffer и делает её текущей.
While NextPackEntry(0) ; Этот цикл будет действовать от записи следующей за "2.txt"
Debug "Имя: " + PackEntryName(0) + ", Размер: " + PackEntrySize(0)
Wend
EndIf
ClosePack(0) ; Закрывает открытый архивный файл
EndIf
См. также
OpenPack(), ExaminePack(), NextPackEntry()
Поддерживаемые OS
Все