Page 1 sur 1
[R] Sauvegarde de données de type String.
Posté : mer. 26 oct. 2011 14:33
par XenaMelody
Bonjour !
Comment sauvegarder des informations comme des strings ou autre sans devoir créer de fichier .ini ou .txt ? C'est peut-être une question bête mais j'ai besoin de votre aide. Je me lance dans un programme multi-fonction. L'utilisateur doit écrire le nom d'une fonction ou un code pour exécuter cette fonction ( par exemple : shutdown ). Et j'aimerai aussi pouvoir ajouter un mode de création. Une fonction permettant d'en créer d'autre, une sorte de SciTE. Le problème c'est que je ne sais pas comment sauvegarder ces fonctions sans créer un autre fichier.
Merci d'avance.
Re: [..] Sauvegarde de données de type String.
Posté : mer. 26 oct. 2011 14:39
par moi
je suis pas sur mais tu peut écrire la fonction dans le registre avec le code comme ça pas de nouveau fichier ou alors tu creer un ini (un seul) qui contient toute les fonctions creer...
Re: [..] Sauvegarde de données de type String.
Posté : mer. 26 oct. 2011 14:43
par GaRydelaMer
Bonjour
ton problème est comment gérer des données sous forme de string a l’extérieur de ton programme de façon structurées:
1/ La base de registre
2/ Un fichier ini
3/ Un fichier XML
4/ Une base de données
Tous ça est facilement faisable avec AutoIt, à toi de faire le choix.
Edit:
Un dernier point, tu peux aussi créer ton fichier et l'inclure dans ton fichier exe final, de cette façon tu fournis la 1ere version de la liste de tes fonctions qui sera par la suite modifier par ton programme. FileInstall dans l'aide.
Re: [..] Sauvegarde de données de type String.
Posté : mer. 26 oct. 2011 14:55
par XenaMelody
En faite, le string c'est une fonction ( fonction($paramN) ). Je vais l’exécuter dans mon script en utilisant Execute() ou Call() ( Je vais regarder pour ce qui convient le mieux dans ma situation ). On peut vraiment enregistrer une dizaine de lignes dans une même clé ? Et que veux-tu dire par Base de donnée et sous quel forme ?
Edit :
J'ai regardé pour le registre et dans l'aide : RegWrite ( "keyname" [,"valuename" [, "type" [, value]]] )
Pour un string ( comme je ne connais que très très très peu l'assembleur, en gros quasiment aucune connaissance dans ce domaine ), il faut que je mette en type "REG_DWORD" ?
Re: [..] Sauvegarde de données de type String.
Posté : mer. 26 oct. 2011 15:24
par GaRydelaMer
J'ai fait un truc du genre pour un outils de transfert de données.
Pour transférer un champ d'une base à une autre je peux lui appliquer des fonctions pour transformer sa valeur.
Exemple:
- mettre le texte en Majuscule, sympa pour la partie ville d'une adresse
- transformer une date/heure "22/01/2011 08:00:25", en une date simple "2011/02/22"
etc
Pour ce faire j'ai préférer utiliser un fichier XML pour ça souplesse
Un fichier qui contient toutes les fonctions et la définition des paramètres:
de cette forme:
Code : Tout sélectionner
<Functions>
<Function Name="_StringInsert" Type="String">
<Param Type="String" Optional="False" Value="True"/>
<Param Type="String" Optional="False" Value="False"/>
<Param Type="Number" Optional="False" Value="False"/>
</Function>
<Function Name="_StringProper" Type="String">
<Param Type="String" Optional="False" Value="True"/>
</Function>
</Functions>
de cette façon pour chaque fonction je peux lui ajouter autant de paramètres que nécessaire, en définissant le type, si il est optionnel ou obligatoire, et si il doit être remplacer par la valeur (cette valeur et la valeur du champ d'origine qui passe à travers la suite de fonctions)
Pour reprendre l'exemple de la date, la définition pour transférer la date:
Code : Tout sélectionner
<Field Source="DATE DE NAISSANCE" Destination="Date de Naissance">
<Function Name="StringStripWS" Parametres="7"/>
<Function Name="StringLeft" Parametres="8"/>
<Function Name="StringRegExpReplace" Parametres="(\d{4})(\d{2})(\d{2}),$1/$2/$3"/>
</Field>
Valeur = "22/01/2011 08:00:25"
les fonctions à appliquer:
Code : Tout sélectionner
$value = StringStripWS($value, 7)
$value = StringLeft($value, 8)
$value = StringRegExpReplace($value, "(\d{4})(\d{2})(\d{2})", "$1/$2/$3")
=> $value contient alors: "22/01/2011"
Donc ici j'ai construit une fonction qui me renvoie un texte qui va être exécuté en remplaçant "@VALUE@" par la valeur réelle:
Code : Tout sélectionner
StringRegExpReplace(StringLeft(StringStripWS("@VALUE@", 7), 8), "(\d{4})(\d{2})(\d{2})", "$1/$2/$3")
Je fais ca pour ne pas à avoir à recalculer la chaine à exécuter a chaque ligne lu dans la table d'origine.
Pour ne intro aux base de données:
http://fr.wikipedia.org/wiki/Base_de_donn%C3%A9e
Re: [..] Sauvegarde de données de type String.
Posté : mer. 26 oct. 2011 15:32
par XenaMelody
Je pense que je vais utiliser la méthode registre vu que je ne connais rien en XML ( même si sa ma l'air plus facile que AutoIt ). Cependant, Puis-je simplement utiliser RegWrite, RegDelete et RegRead pour utiliser le registre ? Si oui, comment vais-je faire pour préciser le type de la valeur string ? "REG_SZ", "REG_MULTI_SZ", "REG_EXPAND_SZ", "REG_DWORD" ou "REG_QWORD" ?
Et ce que que je veux sauvegarder, c'est la fonction en entier, pas simplement les paramètres, Pour cette fonction :
Imaginons que je créer cette fonction avec mon programme. Si je quitte et que je le relance, je vais devoir recréer la fonction. Comment faire pour la garder en mémoire sans créer de fichier ? Pour l'instant, la seul solution c'est de créer une clé dans le registre.
Re: [..] Sauvegarde de données de type String.
Posté : mer. 26 oct. 2011 15:44
par GaRydelaMer
Regarde dans l'aide.
Creates a key or value in the registry.
RegWrite ( "keyname" [,"valuename" [, "type" [, value]]] )
Parameters:
keyname The registry key to write to. If no other parameters are specified this key will simply be created.
valuename [optional] The valuename to write to.
type [optional] Type of key to write: "REG_SZ", "REG_MULTI_SZ", "REG_EXPAND_SZ", "REG_DWORD", "REG_QWORD", or "REG_BINARY".
value [optional] The value to write.
; Write the REG_MULTI_SZ value of "line1" and "line2"
RegWrite("HKEY_CURRENT_USER\Software\Test", "TestKey1", "REG_MULTI_SZ", "line1" & @LF & "line2")
Re: [..] Sauvegarde de données de type String.
Posté : mer. 26 oct. 2011 22:17
par mikell
XenaMelody a écrit :Comment faire pour la garder en mémoire sans créer de fichier ?
Une simple inscription en mémoire c'est un risque inacceptable de perte de données
De plus
" La sauvegarde passe forcément par un enregistrement des données (....)
En informatique, un enregistrement est un élément d’un fichier ou d’une base de données " (wikipedia)
Donc à part un fichier quel qu'il soit tu n'as que le registre (qui est aussi un fichier, d'ailleurs ^^ )
Re: [..] Sauvegarde de données de type String.
Posté : mer. 26 oct. 2011 23:11
par XenaMelody
Je pense que je vais utiliser le registre alors.
Un "résolut" de plus, un ! Merci à vous !