"invalid memory" avec UnpackMemory

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

"invalid memory" avec UnpackMemory

Message 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.
Gratteur
Messages : 147
Inscription : ven. 22/avr./2005 23:02

Message 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)
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message par minirop »

merci, j'avais pas compris comment çà fonctionait ;)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

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