;
; ------------------------------------------------------------
;
; PureBasic - Compressor example file
;
; (c) Fantaisie Software
;
; ------------------------------------------------------------
;
UseBriefLZPacker() ; Small and fast packer
If ReadFile(0, OpenFileRequester("Выберите файл для сжатия", "", "*.*", 0))
FileLength = Lof(0)
; Выделит 2 буфера памяти, необходимые для сжатия..
;
*Source = AllocateMemory(FileLength)
*Target = AllocateMemory(FileLength)
If FileLength And *Source And *Target
ReadData(0, *Source, FileLength) ; Считает весь файл в буфер памяти
; Сжатие файла, который находится в памяти (используйте таймер, чтобы увидеть время, затрачиваемое на сжатие...).
;
CompressedLength = CompressMemory(*Source, FileLength, *Target, FileLength)
If CompressedLength
DecompressedLength = UncompressMemory(*Target, CompressedLength, *Source, FileLength)
If DecompressedLength = FileLength
MessageRequester("Инфо", "Достижения сжатия: "+#LF$+#LF$+"Старый размер: "+Str(FileLength)+#LF$+"Новый размер: "+Str(CompressedLength))
EndIf
Else
MessageRequester("Ошибка", "Невозможно сжать файл")
EndIf
FreeMemory(*Source)
FreeMemory(*Target)
EndIf
CloseFile(0)
EndIf
End