[VB6] Sauvegarde/chargement de variables dans un fichier
Bonjour,
Dans un de mes projets de programme, j'aurais besoin de sauvegarder des variables pour pouvoir les recharger plus tard.
Avec peu de variables et un format de fichier "définitif", ça ne me pose pas de problème. On ouvre un fichier en mode binaire, on envoie les variables dans le fichier en faisant une suite de "Put #1, ,MaVariable" et on les récupère avec "Get". Bref, c'est simple.
Mon souci est que je souhaite stocker un plus grand nombre de variables et surtout mettre en place un format de fichier capable de migrer sans avoir besoin de créer des routines de migration.
Pour le premier point, je peux utiliser des variables de type utilisateur pour la lisibilité.mais ça entre en conflit le besoin de flexibilité.
Pour le second, j'avais pensé que le fichier pourrait commencer par un petit en-tête avec un identifiant et une version de fichier. A la suite de ça, je mettrait des enregistrement avec :
- un identifiant (un integer par exemple)
- la longueur en octet pour sauter l'enregistrement si on tente de lire avec une version plus ancienne du logiciel (en mode lecture seule).
- les données binaire de la variable, tableau ....
Je m'imagine déjà avec un code de 3 kilomètres de long avec un truc du genre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
Do
Get #1, , Var_identifiant
Get #1, , Var_LongueurEnregistrement
Select case Var_identifiant
Case 1
Get #1, , Var_Tableau1
Case 2
Get #1, , Var_Chaine1
Case xxx
[...]
Case else
'faire un saut, fonction "seek" ?
End select
Loop |
Et cela en quasi doublon (sauvegarde/ouverture).
Est-ce qu'il y aurait une méthode plus factorisée et qui pourrait être réutilisé aussi bien pour la lecture que pour l'écriture. Du genre :
Code:
1 2 3 4 5 6 7
|
Do
Get #1, , Var_identifiant
Get #1, , Var_LongueurEnregistrement
Get #1, , Fonction_ou_Objet_Simulant_une_Variable( Var_identifiant )
Loop |
J'en suis resté à du code BASIC donc très "procédurale". Je n'ai pas exploré certaines possibilités du type classes, objets ...
Merci