[Résolu] Problème de compression
Publié : mer. 28/mai/2014 16:33
Bonjour à tous, j'essaie de remettre à jour ce programme de Guimauve
Le problème c'est que j'ai droit au message "accès mémoire invalide", pourquoi ?
Je vous remercie tous à l'avance
Le problème c'est que j'ai droit au message "accès mémoire invalide", pourquoi ?
Je vous remercie tous à l'avance
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 <<<<<
UseZipPacker()
*Entree = AllocateMemory(5000)
*Sortie = AllocateMemory(5000)
Procedure AddPackByte(Var.b, Level.b = 6)
Byte.Byte\b = Var
AddPackMemory(0, *Entree, SizeOf(Byte), "Test.pak")
EndProcedure
Procedure AddPackAscii(Var.a, Level.b = 6)
Ascii.Ascii\a = Var
AddPackMemory(0, *Entree, SizeOf(Ascii), "Test.pak")
EndProcedure
Procedure AddPackCharacter(Var.c, Level.b = 6)
Character.Character\c = Var
AddPackMemory(0, *Entree, SizeOf(Character), "Test.pak")
EndProcedure
Procedure AddPackUnicode(Var.u, Level.b = 6)
Unicode.Unicode\u = Var
AddPackMemory(0, *Entree, SizeOf(Unicode), "Test.pak")
EndProcedure
Procedure AddPackWord(Var.w, Level.b = 6)
Word.Word\w = Var
AddPackMemory(0, *Entree, SizeOf(Word), "Test.pak")
EndProcedure
Procedure AddPackInteger(Var.i, Level.b = 6)
Integer.Integer\i = Var
AddPackMemory(0, *Entree, SizeOf(Integer), "Test.pak")
EndProcedure
Procedure AddPackLong(Var.l, Level.b = 6)
Long.Long\l = Var
AddPackMemory(0, *Entree, SizeOf(Long), "Test.pak")
EndProcedure
Procedure AddPackQuad(Var.q, Level.b = 6)
Quad.Quad\q = Var
AddPackMemory(0, *Entree, SizeOf(Quad), "Test.pak")
EndProcedure
Procedure AddPackFloat(Var.f, Level.b = 6)
Float.Float\f = Var
AddPackMemory(0, *Entree, SizeOf(Float), "Test.pak")
EndProcedure
Procedure AddPackDouble(Var.d, Level.b = 6)
Double.Double\d = Var
AddPackMemory(0, *Entree, SizeOf(Double), "Test.pak")
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, *Entree, StringLen, "Test.pak")
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<
; <<<<< UnPacking <<<<<
Procedure.b UnPackByte()
Var.i = NextPackEntry(0)
ProcedureReturn PeekB(Var)
EndProcedure
Procedure.a UnPackAscii()
Var.i = NextPackEntry(0)
ProcedureReturn PeekA(Var)
EndProcedure
Procedure.c UnPackCharacter()
Var.i = NextPackEntry(0)
ProcedureReturn PeekC(Var)
EndProcedure
Procedure.u UnPackUnicode()
Var.i = NextPackEntry(0)
ProcedureReturn PeekU(Var)
EndProcedure
Procedure.w UnPackWord()
Var.i = NextPackEntry(0)
ProcedureReturn PeekW(Var)
EndProcedure
Procedure.i UnPackInteger()
Var.i = NextPackEntry(0)
ProcedureReturn PeekI(Var)
EndProcedure
Procedure.l UnPackLong()
Var.i = NextPackEntry(0)
ProcedureReturn PeekL(Var)
EndProcedure
Procedure.q UnPackQuad()
Var.i = NextPackEntry(0)
ProcedureReturn PeekQ(Var)
EndProcedure
Procedure.f UnPackFloat()
Var.i = NextPackEntry(0)
ProcedureReturn PeekF(Var)
EndProcedure
Procedure.d UnPackDouble()
Var.i = NextPackEntry(0)
ProcedureReturn PeekD(Var)
EndProcedure
Procedure.s UnPackString()
CompilerIf #PB_Compiler_Unicode
Options = #PB_Unicode
CompilerElse
Options = #PB_Ascii
CompilerEndIf
String.i = NextPackEntry(0)
StringLen.l = PackEntrySize(0)
ProcedureReturn PeekS(String, StringLen, Options)
EndProcedure
CompilerIf #PB_Compiler_IsMainFile
Enumeration fichier
#Fichier
EndEnumeration
Global.s fichier="Test.pak"
If CreatePack(#Fichier, fichier)
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(#Fichier)
EndIf
If OpenPack(#Fichier, "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(#Fichier)
EndIf
CompilerEndIf
; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<