В одной из моих программ понадобилось извлечение множества файлов из ДатаСекции в одну из папок диска.
Поэтому сделал небольшой архиватор, основанный на функциях PackMemory и UnpackMemory.
Он позволяет создать архивный файл из файлов выбранной папки (процедура PurePak_Pac) и распаковать файлы из памяти в указанную папку (процедура PurePak_MemUnPac).
Естественно что алгоритм упаковки уникальный и ничем другим кроме данной программы, файлы не извлечь.
Упаковка файлов из папки в архив
XIncludeFile "PurePac_Func.pbi"
Dir.s = PathRequester("Папка с упаковываемым файлами ","")
If FileSize(Dir) = -2
ArchiveFile.s=SaveFileRequester("","","APB архивы|*.apb|Все файлы|*.*",0)
If ArchiveFile<>""
If GetExtensionPart(ArchiveFile)="" : ArchiveFile+".apb" : EndIf
If PurePak_Pac(Dir, ArchiveFile) = 1
MessageRequester("", "Успешно упаковано", #MB_OK)
EndIf
EndIf
EndIfРаспаковка файлов
XIncludeFile "PurePac_Func.pbi"
ArchiveFile.s=OpenFileRequester("","","APB архивы|*.apb|Все файлы|*.*",0)
If FileSize(ArchiveFile)>0
Dir.s = PathRequester("Куда распаковать файлы ","")
If FileSize(Dir) = -2
If ReadFile(0, ArchiveFile)
Size=Lof(0)
*mem=AllocateMemory(Size)
ReadData(0, *mem, Size)
If PurePak_MemUnPac(Dir, *mem, Size) = #True
MessageRequester("", "Успешно распаковано", #MB_OK)
EndIf
FreeMemory(*mem)
CloseFile(0)
Else
MessageRequester("", "Не удалось открыть файл", #MB_OK)
EndIf
EndIf
EndIfВ проге WinAPI не использовал, поэтому в Linux и MacOS X скорее всего тоже будет работать.
Скачать файлы. http://pure-basic.narod.ru/forum_files/PurePAC.rar
