Page 1 sur 1

Unpackmemory (resolu)

Publié : mer. 09/oct./2013 22:34
par kernadec
bonsoir
je suis passer à coté de l'information au sujet de la commande : "UnpackMemory()"
comment remplacer cette commande sous PB520.
Alors qu'elle existait dans la version PB4.51
exemple de la doc PB451:

UnpackMemory()

Syntaxe

Resultat = UnpackMemory(MemoireSource, MemoireDestination)
Description

Décompresse une zone mémoire préalablement compressée (avec PackMemory()) vers la zone MemoireDestination. Si le 'Résultat' est 0, alors les données ne peuvent pas être décompressées (format invalide). Sinon la taille des données décompressées est renvoyée dans 'Resultat'.

UnpackMemory() attend des données correctement compressées, car la fonction n'effectue aucun contrôle (pour des raisons de performances). Si vous décompressez des données qui ne sont pas dignes de confiance, vous devriez avant tout les contrôler avec par exemple MD5().

Note : La décompression est réellement très rapide, contrairement à la compression.


Cordialement

Re: Unpackmemory

Publié : mer. 09/oct./2013 22:48
par stombretrooper
Bonsoir,

Je penses, que tu devrais regarder la fonction "UncompressMemory" :
UncompressMemory(*Buffer, Size, *Output, OutputSize [, PluginID])

Sur le forum anglais, j'ai trouvé ça :
http://www.purebasic.fr/english/viewtop ... 13&t=52441
Qui correspond à ton problème.

A+

Re: Unpackmemory

Publié : mer. 09/oct./2013 23:06
par falsam
A priori ma réponse est la même que le poste cité.

Code : Tout sélectionner

UseLZMAPacker()

String$ ="Compress uncompress in memory"

*InPut  = AllocateMemory(5000)
*OutPut = AllocateMemory(5000)

PokeS(*InPut, String$)
Debug MemorySize(*Input)

Size =  CompressMemory(*InPut, 5000, *OutPut, 5000, #PB_PackerPlugin_LZMA) 
Debug Size
ShowMemoryViewer(*OutPut, Size)
                 
Size = UncompressMemory(*OutPut, 5000, *InPut, 5000, #PB_PackerPlugin_LZMA)
Debug Size
;ShowMemoryViewer(*Input, Size)

FreeMemory(*InPut)
FreeMemory(*Output)

Re: Unpackmemory

Publié : jeu. 10/oct./2013 10:21
par kernadec
bonjour
Merci stombretrooper & falsam :D
j'avais un code qui fonctionner plus :(

Dans l'historique de la doc, il pourrait y avoir une fonction recherche pour un mot :?
Il reste la solution est de copié tout le texte dans le notepad pour lancer une recherche.

ET là..... je n'ai pas reçu d'infos sur la suppression de la commande UnpackMemory()
peut être ajouter ce changement dans l'historique de la doc

En plus j'ai complétement oublié de chercher sur le forum anglais :?

Cordialement

Re: Unpackmemory

Publié : jeu. 24/oct./2013 19:49
par kernadec
bonsoir
remerciement à Mickael Vogel
Une autre solution a ce problème ici :http://www.purebasic.fr/english/viewtop ... 12&t=54599
Avec la procédure de " Mickael Vogel " mise en début des codes qui utilisent la commande UnpackMemory
l'ancien nom de la commande fonctionne à nouveau :mrgreen:

Cordialement

Code : Tout sélectionner

Procedure.i UnpackMemory (Source, Destination) 
  UseJCALG1Packer() 
  ProcedureReturn UncompressMemory(Source, 0, Destination, 0, #PB_PackerPlugin_JCALG1) 
EndProcedure