Page 1 sur 1

[Func] Serialize / Unserialize

Posté : mar. 16 août 2011 14:38
par timmalos
Bonjour à tous
Quelques fois, vous pouvez avoir besoin de sauvegarder vos données dans des fichiers de configuration/sauvegarde. Seulement voilà, si il est simple d’écrire un texte, il peut etre plus compliqué de sauvegarder un tableau, un booleen, un Handle, etc...
Il faut en effet passer par des boucles fors pour les premiers, des nombres (0 et 1) pour les 2eme, encore plus difficile pour les derniers.
Pire encore quand on travaille sur Internet. Comment passer un tableau en paramètre à un site web par méthode GET?

En effet, un simple http://autoitscript.fr/?variable=bonjour marche, mais si ma variable est un tableau?Rien ne va plus

Alors le principe de Serializer apparait, le principe est très simple : Tout se stocke d'une certaine manière dans un format texte. Comme un sorte de Cryptage que l'on peut chiffrer/dechiffrer a volonté.

Pour faire plus simple, on va transformer par exemple une array de cette forme :

Code : Tout sélectionner

Dim $a[4] = [TRUE, "Bonjour", 456, "Louis"]
en un texte ressemblant à ceci :

Code : Tout sélectionner

[30=4-?1=t$7=Bonjour&3=456$5=Louis
Ca peut vous paraitre compliqué/inutile, mais croyez moi vous allez vite vous rendre compte de la puissance de cet outil.


Exemple d'utilisation :

Code : Tout sélectionner

#include <Array.au3>

Dim $a1[4] = [TRUE, FALSE, "Richard", 25]
Dim $a2[4] = [TRUE, $a1, "Richard", WinExists("firefox")]
Dim $a[4] = [TRUE, $a2, 456, "Louis"]
$b = _serialize($a)
MsgBox(0,"",$b)
$c = _unserialize($b)
_ArrayDisplay($c)
_ArrayDisplay($c[1])

Re: [Func] Serialize / Unserialize

Posté : ven. 19 août 2011 01:58
par RL77LUC
Ah, jolie référence aux fonctions PHP :). Merci du partage !

Re: [Func] Serialize / Unserialize

Posté : ven. 19 août 2011 16:02
par Iste
Aux fonctions PHP ?

@tim : Quand tu parle de Handle, on peut avoir plus de détails ? Quel type de Handle cela peut sérialiser ?

Re: [Func] Serialize / Unserialize

Posté : ven. 19 août 2011 20:09
par timmalos
En effet ces fonctions sont tres utilisées en PHP pour stocker des objets et des tableaux.

Par exemple, comment transmettre un array de autoitscript.fr à usb-online.fr ? Un simple coup de serialize/unserialize et on appelle la page par une simple requete GET et le tour est joué, idem pour les objets.


Concernant les Handle, ce sont bien les handle de fenetres dont je parle ici. Cependant ce n'est guère conseillé de stocker un handle car rien ne garantit que votre fenetre possedera toujours le meme quand vous le recupererez ;)