[R] Sauvegarde de données de type String.
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- XenaMelody
- Niveau 4

- Messages : 67
- Enregistré le : mar. 25 oct. 2011 00:45
- Status : Hors ligne
[R] Sauvegarde de données de type String.
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.
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.
Modifié en dernier par XenaMelody le mer. 26 oct. 2011 23:11, modifié 1 fois.
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Talleyrand
- moi
- Niveau 7

- Messages : 370
- Enregistré le : sam. 09 juil. 2011 22:14
- Localisation : devant sont ordinateur
- Status : Hors ligne
Re: [..] Sauvegarde de données de type String.
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...
le problème ce n'est pas un problème, le seul problème ici c'est nous.
j'aime NYAN CAT
j'aime NYAN CAT

-
GaRydelaMer
- Niveau 7

- Messages : 450
- Enregistré le : mer. 18 mars 2009 22:12
- Localisation : Montpellier
- Status : Hors ligne
Re: [..] Sauvegarde de données de type String.
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.
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.
- XenaMelody
- Niveau 4

- Messages : 67
- Enregistré le : mar. 25 oct. 2011 00:45
- Status : Hors ligne
Re: [..] Sauvegarde de données de type String.
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" ?
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" ?
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Talleyrand
-
GaRydelaMer
- Niveau 7

- Messages : 450
- Enregistré le : mer. 18 mars 2009 22:12
- Localisation : Montpellier
- Status : Hors ligne
Re: [..] Sauvegarde de données de type String.
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:
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:
Valeur = "22/01/2011 08:00:25"
les fonctions à appliquer:
=> $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:
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
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>
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>
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")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")Pour ne intro aux base de données: http://fr.wikipedia.org/wiki/Base_de_donn%C3%A9e
- XenaMelody
- Niveau 4

- Messages : 67
- Enregistré le : mar. 25 oct. 2011 00:45
- Status : Hors ligne
Re: [..] Sauvegarde de données de type String.
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.
Et ce que que je veux sauvegarder, c'est la fonction en entier, pas simplement les paramètres, Pour cette fonction :
Code : Tout sélectionner
Func PrintMessage($Text)
MsgBox(0, "Message", $Text)
EndFuncImaginons 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.
Modifié en dernier par XenaMelody le mer. 26 oct. 2011 15:52, modifié 1 fois.
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Talleyrand
-
GaRydelaMer
- Niveau 7

- Messages : 450
- Enregistré le : mer. 18 mars 2009 22:12
- Localisation : Montpellier
- Status : Hors ligne
Re: [..] Sauvegarde de données de type String.
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")
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")
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Sauvegarde de données de type String.
Une simple inscription en mémoire c'est un risque inacceptable de perte de donnéesXenaMelody a écrit :Comment faire pour la garder en mémoire sans créer de fichier ?
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 ^^ )
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- XenaMelody
- Niveau 4

- Messages : 67
- Enregistré le : mar. 25 oct. 2011 00:45
- Status : Hors ligne
Re: [..] Sauvegarde de données de type String.
Je pense que je vais utiliser le registre alors.
Un "résolut" de plus, un ! Merci à vous !
Un "résolut" de plus, un ! Merci à vous !
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Talleyrand
