Packer Extra Function
Posted: Thu May 26, 2011 5:53 am
Hello everyone,
This is a tiny Packer Extra Function Lib but it bot deserve a Nobel Price. I have created this lib to be able to add some extra info in a Pack file such as Array or Linked List size and the file name along packed file. I hope this lib can be useful for someone else.
Have fun !
Guimauve
This is a tiny Packer Extra Function Lib but it bot deserve a Nobel Price. I have created this lib to be able to add some extra info in a Pack file such as Array or Linked List size and the file name along packed file. I hope this lib can be useful for someone else.
Have fun !
Guimauve
Code: Select all
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : Packer - Extra Function
; File Name : Packer - Extra Function.pb
; File version: 1.0.0
; Programmation : OK
; Programmed by : Guimauve
; Date : 26-05-2011
; Mise à jour : 26-05-2011
; PureBasic cade : 4.50
; Plateform : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<<<<<<<<<<<<<<<<
; <<<<< Packing <<<<<
Procedure AddPackByte(Var.b, Level.b = 6)
Byte.Byte\b = Var
AddPackMemory(Byte, SizeOf(Byte), Level)
EndProcedure
Procedure AddPackAscii(Var.a, Level.b = 6)
Ascii.Ascii\a = Var
AddPackMemory(Ascii, SizeOf(Ascii), Level)
EndProcedure
Procedure AddPackCharacter(Var.c, Level.b = 6)
Character.Character\c = Var
AddPackMemory(Character, SizeOf(Character), Level)
EndProcedure
Procedure AddPackUnicode(Var.u, Level.b = 6)
Unicode.Unicode\u = Var
AddPackMemory(Unicode, SizeOf(Unicode), Level)
EndProcedure
Procedure AddPackWord(Var.w, Level.b = 6)
Word.Word\w = Var
AddPackMemory(Word, SizeOf(Word), Level)
EndProcedure
Procedure AddPackInteger(Var.i, Level.b = 6)
Integer.Integer\i = Var
AddPackMemory(Integer, SizeOf(Integer), Level)
EndProcedure
Procedure AddPackLong(Var.l, Level.b = 6)
Long.Long\l = Var
AddPackMemory(Long, SizeOf(Long), Level)
EndProcedure
Procedure AddPackQuad(Var.q, Level.b = 6)
Quad.Quad\q = Var
AddPackMemory(Quad, SizeOf(Quad), Level)
EndProcedure
Procedure AddPackFloat(Var.f, Level.b = 6)
Float.Float\f = Var
AddPackMemory(Float, SizeOf(Float), Level)
EndProcedure
Procedure AddPackDouble(Var.d, Level.b = 6)
Double.Double\d = Var
AddPackMemory(Double, SizeOf(Double), Level)
EndProcedure
Procedure AddPackString(String.s, Level.b = 6)
CompilerIf #PB_Compiler_Unicode
StringLen.l = Len(String) * 2
CompilerElse
StringLen.l = Len(String)
CompilerEndIf
AddPackMemory(@String, StringLen, Level)
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<
; <<<<< UnPacking <<<<<
Procedure.b UnPackByte()
Var.i = NextPackFile()
ProcedureReturn PeekB(Var)
EndProcedure
Procedure.a UnPackAscii()
Var.i = NextPackFile()
ProcedureReturn PeekA(Var)
EndProcedure
Procedure.c UnPackCharacter()
Var.i = NextPackFile()
ProcedureReturn PeekC(Var)
EndProcedure
Procedure.u UnPackUnicode()
Var.i = NextPackFile()
ProcedureReturn PeekU(Var)
EndProcedure
Procedure.w UnPackWord()
Var.i = NextPackFile()
ProcedureReturn PeekW(Var)
EndProcedure
Procedure.i UnPackInteger()
Var.i = NextPackFile()
ProcedureReturn PeekI(Var)
EndProcedure
Procedure.l UnPackLong()
Var.i = NextPackFile()
ProcedureReturn PeekL(Var)
EndProcedure
Procedure.q UnPackQuad()
Var.i = NextPackFile()
ProcedureReturn PeekQ(Var)
EndProcedure
Procedure.f UnPackFloat()
Var.i = NextPackFile()
ProcedureReturn PeekF(Var)
EndProcedure
Procedure.d UnPackDouble()
Var.i = NextPackFile()
ProcedureReturn PeekD(Var)
EndProcedure
Procedure.s UnPackString()
CompilerIf #PB_Compiler_Unicode
Options = #PB_Unicode
CompilerElse
Options = #PB_Ascii
CompilerEndIf
String.i = NextPackFile()
StringLen.l = PackFileSize()
ProcedureReturn PeekS(String, StringLen, Options)
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< !!! WARNING - YOU ARE NOW IN A TESTING ZONE - WARNING !!! <<<<<
; <<<<< !!! WARNING - THIS CODE SHOULD BE COMMENTED - WARNING !!! <<<<<
; <<<<< !!! WARNING - BEFORE THE FINAL COMPILATION. - WARNING !!! <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
If CreatePack("Test.pak")
AddPackByte(125, 9)
AddPackAscii(250, 9)
AddPackCharacter(251, 9)
AddPackUnicode(65000, 9)
AddPackWord(-15000, 9)
AddPackInteger(2147483647, 9)
AddPackLong(2147483640, 9)
AddPackQuad(9223372036854775807, 9)
AddPackFloat(2*#PI, 9)
AddPackDouble(4*#PI, 9)
AddPackString("PureBasic", 9)
ClosePack()
EndIf
If OpenPack("Test.pak")
Debug UnPackByte()
Debug UnPackAscii()
Debug UnPackCharacter()
Debug UnPackUnicode()
Debug UnPackWord()
Debug UnPackInteger()
Debug UnPackLong()
Debug UnPackQuad()
Debug UnPackFloat()
Debug UnPackDouble()
Debug UnPackString()
ClosePack()
EndIf
DeleteFile("Test.pak")
; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<