Packer Extra Function
Publié : jeu. 26/mai/2011 6:06
Bonjour à tous,
Une petite librairie pour ajouter des fonctions supplémentaires pour les fichiers *.pack. L'idée au départ était d'ajouter une fonction pour compresser la taille d'un tableau ou d'une liste chaînée ainsi que le nom des fichiers avec les fichiers inclus dans une archive. Par la suite, j'ai décidé d'ajouter une fonction pour chacun des types standards même si j'avais seulement besoin des commandes AddPackLong() / UnPackLong() et AddPackString() / UnPackString().
En espérant qu'elle pourra être utile à quelqu'un.
A+
Guimauve
Une petite librairie pour ajouter des fonctions supplémentaires pour les fichiers *.pack. L'idée au départ était d'ajouter une fonction pour compresser la taille d'un tableau ou d'une liste chaînée ainsi que le nom des fichiers avec les fichiers inclus dans une archive. Par la suite, j'ai décidé d'ajouter une fonction pour chacun des types standards même si j'avais seulement besoin des commandes AddPackLong() / UnPackLong() et AddPackString() / UnPackString().
En espérant qu'elle pourra être utile à quelqu'un.
A+
Guimauve
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; 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 <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<