Erreur inatendue sur PackMemory

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
DarkVader
Messages : 95
Inscription : mer. 11/juil./2007 10:56

Erreur inatendue sur PackMemory

Message 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é ?
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Erreur inatendue sur PackMemory

Message 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 ?
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
DarkVader
Messages : 95
Inscription : mer. 11/juil./2007 10:56

Re: Erreur inatendue sur PackMemory

Message 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 !
Avatar de l’utilisateur
DarkVader
Messages : 95
Inscription : mer. 11/juil./2007 10:56

Re: Erreur inatendue sur PackMemory

Message 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
Répondre