[Func] Serialize / Unserialize

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

[Func] Serialize / Unserialize

#1

Message 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])
Fichiers joints
serialize.au3
(3.88 Kio) Téléchargé 403 fois
Avatar du membre
RL77LUC
Niveau 5
Niveau 5
Messages : 173
Enregistré le : mar. 21 sept. 2010 16:54
Status : Hors ligne

Re: [Func] Serialize / Unserialize

#2

Message par RL77LUC »

Ah, jolie référence aux fonctions PHP :). Merci du partage !
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [Func] Serialize / Unserialize

#3

Message 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 ?
Signez ici
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [Func] Serialize / Unserialize

#4

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