Page 1 sur 1

Erreur inatendue sur PackMemory

Publié : jeu. 19/mai/2011 11:02
par DarkVader
Bonjour,
Je bute sur ce code

Code : Tout sélectionner

; Charger un fichier décompressé en mémoire
r=OpenPack("E:\tempPacker.txt") ; tempPacker.txt fichier préalablement compressé
If r
  *adrPack=NextPackFile()  
  l=PackFileSize()
EndIf
ClosePack()  


; recompresser la zone mémoire
If l
  Debug "lenSrc : " + Str(l)
  
  *memOut=AllocateMemory(l+8) 
  lenOut=PackMemory(*adrPack, *memOut,l,9)
  
  Debug  lenOut
EndIf  
qui me retourne invariablement une erreur «Invalid memory access (read error at xxx)»
et l'erreur de lecture se situe toujours à *adrPack+1968 quelquesoit le contenu du fichier compressé ?

Re: Erreur inatendue sur PackMemory

Publié : jeu. 19/mai/2011 17:05
par graph100
il me semble que certain type de contenu ne peux être compressé, mais ce ne devrais pas planter le programme
(par exemple j'ai essaye d'utiliser ca sur des images jpeg, png, et ca ne fonctionne pas)
Il n'est peut être pas possible de recompresser de la mémoire déjà compresser ?

Re: Erreur inatendue sur PackMemory

Publié : jeu. 19/mai/2011 18:54
par DarkVader
En fait si closepack() est déplacé en fin de procédure, ça passe
or PackMemory/unpackmemory n'est pas forcement lié à une lecture/écriture de fichier !

Re: Erreur inatendue sur PackMemory

Publié : jeu. 19/mai/2011 19:03
par DarkVader
Trouvé.
ClosePack libère la mémoire à *adrPack.
Il faut donc effectuer une copie de la mémoire avant le ClosePack
et utiliser cette copie pour le PackMemory