похоже, в пурике это делается только через файл. ну, можно сохранять его во временную папку.
; как прикрутить архив к ресурсам EXE
; barsunduk © 2015
UseZipPacker()
; архив с ресурсами
Enumeration
#Pack
EndEnumeration
; прочитать текстовый файл из архива
Procedure.s unzipTxt(filename.s)
res.s = ""
Size = #False
If ExaminePack(#Pack)
While NextPackEntry(#Pack)
If PackEntryName(#Pack) = filename
Size = PackEntrySize(#Pack, #PB_Packer_UncompressedSize)
*Buffer = AllocateMemory(Size)
Size = UncompressPackMemory(#Pack, *Buffer, Size, filename)
res = PeekS(*Buffer, Size, #PB_UTF8)
EndIf
Wend
EndIf
ProcedureReturn res
EndProcedure
; прочитать картинку из архива
Procedure unzipSprite(filename.s)
res = #False
Size = #False
If ExaminePack(#Pack)
While NextPackEntry(#Pack)
If PackEntryName(#Pack) = filename
Size = PackEntrySize(#Pack, #PB_Packer_UncompressedSize)
*Buffer = AllocateMemory(Size)
Size = UncompressPackMemory(#Pack, *Buffer, Size, filename)
res = CatchSprite(#PB_Any, *Buffer, #PB_Sprite_AlphaBlending)
EndIf
Wend
EndIf
ProcedureReturn res
EndProcedure
; примеры использования:
Procedure onCreate()
; создать файл архива и открыть его для загрузки из него ресурсов
fn.s = GetTemporaryDirectory() + "temparjfile"
If CreateFile(0, fn)
WriteData(0, ?zipData, ?zipEnd - ?zipData)
CloseFile(0)
Else
MessageRequester("ERROR", "Не удаётся сохранить файл" + Chr(13) + fn)
End
EndIf
If OpenPack(#Pack, fn, #PB_PackerPlugin_Zip)
;
Else
MessageRequester("ERROR", "Не удаётся прочитать файл" + Chr(13) + fn)
End
EndIf
; считываем атлас спрайтов
strAtlas = unzipTxt("atlas.atlas")
; считываем карту уровней
strLevels = unzipTxt("levels.txt")
; инициализация системы спрайтов и мыши
InitSprite()
InitMouse()
InitSound()
; создаём экран внутри нашего окна размером с основной десктоп
dskt_cnt = ExamineDesktops()
scr = OpenWindowedScreen(WindowID(#Window), 0, 0, DesktopWidth(0), DesktopHeight(0), 0, 0, 0)
; активируем мышь
ReleaseMouse(#True)
; читаем картинки-спрайты из архива
sprBg = unzipSprite("bg.jpg")
sprAtlas = unzipSprite("atlas.png")
; фильтры для спрайтов
SpriteQuality(#PB_Sprite_BilinearFiltering)
; закрыть файл архива
ClosePack(#Pack)
EndProcedure
DataSection
zipData:
IncludeBinary "data/data.zip"
zipEnd:
EndDataSection