Page 1 sur 1

"invalid memory" avec UnpackMemory

Publié : mar. 01/mai/2007 15:43
par minirop
bonjour,
j'ai besoin des fonctions de "Packer" pour un logiciel donc je fais des tests, alors j'ai fait vite fait un CreatePack() et mis dedans une chaine de caratère ainsi qu'un LONG (la structure) mais au moment de "dépacker" çà me donne un "invalid accès memory"
voilà le code :

Code : Tout sélectionner

filename$ = OpenFileRequester("Choose a file to compress", "", "*.*", 0)
OpenPack(filename$)
str.s = ""
int.LONG
*addr = NextPackFile()
size.l = PackFileSize()
str = Space(size+1)
UnpackMemory(*addr,@str)
; osef du LONG pour le moment
si je fais "debug size" çà me sort la bonne taille de la chaine.
quelqu'un saurait il pourquoi ?
merci.

Publié : mar. 01/mai/2007 16:08
par Gratteur
Tu ne peux pas décompresser la zone mémoire déja décompressée par NextPackFile() (relis la doc), il faut utiliser peeks:

Code : Tout sélectionner

filename$ = OpenFileRequester("Choose a file to compress", "", "*.*", 0)
OpenPack(filename$)
str.s = ""
int.LONG
*addr = NextPackFile()
size.l = PackFileSize()
str = PeekS(*addr, size)

Publié : mar. 01/mai/2007 16:14
par minirop
merci, j'avais pas compris comment çà fonctionait ;)

Publié : mer. 02/mai/2007 15:11
par Anonyme2
Vas voir ici, c'est du code que j'avais posté il y a 3 ans, ça date un peu mais dans le principe ça devrait t'aider.

http://www.purebasic.fr/french/viewtopic.php?t=520