Voilà où je veux en venir: Peut-on stocker des objets dans un fichier de la
meme manière que n'importe quelle variable en C?
Voilà où je veux en venir: Peut-on stocker des objets dans un fichier de la
meme manière que n'importe quelle variable en C?
Voilà où je veux en venir: Peut-on stocker des objets dans un fichier de la
meme manière que n'importe quelle variable en C?
Bonjour.
Je me suis dernièrement lancé dans l'adaptation d'un petit jeu calculette
sur PC.
J'essaie donc de profiter de cette occasion pour passer du C au C++.
Dans ce jeu, il me serait pratique de pouvoir avoir certaines données
sauvegardées dans un fichier.
J'utilise la librairie Allegro, qui inclut des fonctions permettant
d'utiliser les fichiers très proches des fread, fopen, fwrite... de
stdio.h
Voilà où je veux en venir: Peut-on stocker des objets dans un fichier de
la
meme manière que n'importe quelle variable en C?
Non.
Bonjour.
Je me suis dernièrement lancé dans l'adaptation d'un petit jeu calculette
sur PC.
J'essaie donc de profiter de cette occasion pour passer du C au C++.
Dans ce jeu, il me serait pratique de pouvoir avoir certaines données
sauvegardées dans un fichier.
J'utilise la librairie Allegro, qui inclut des fonctions permettant
d'utiliser les fichiers très proches des fread, fopen, fwrite... de
stdio.h
Voilà où je veux en venir: Peut-on stocker des objets dans un fichier de
la
meme manière que n'importe quelle variable en C?
Non.
Bonjour.
Je me suis dernièrement lancé dans l'adaptation d'un petit jeu calculette
sur PC.
J'essaie donc de profiter de cette occasion pour passer du C au C++.
Dans ce jeu, il me serait pratique de pouvoir avoir certaines données
sauvegardées dans un fichier.
J'utilise la librairie Allegro, qui inclut des fonctions permettant
d'utiliser les fichiers très proches des fread, fopen, fwrite... de
stdio.h
Voilà où je veux en venir: Peut-on stocker des objets dans un fichier de
la
meme manière que n'importe quelle variable en C?
Non.
"Don Miguel" a écritJe me suis dernièrement lancé dans l'adaptation d'un petit jeu
calculette sur PC. J'essaie donc de profiter de cette occasion pour
passer du C au C++. Dans ce jeu, il me serait pratique de pouvoir
avoir certaines données sauvegardées dans un fichier. J'utilise la
librairie Allegro, qui inclut des fonctions permettant d'utiliser
les fichiers très proches des fread, fopen, fwrite... de stdio.h
Voilà où je veux en venir: Peut-on stocker des objets dans un
fichier de la meme manière que n'importe quelle variable en C?
Non. Vous pourriez articuler votre démarche comme ça : Fortement
inspiré des fichiers ini de Windows, un fichier texte de ce genre:
<jeu.ini>
[general]
Top@
LeftE6
DepuisDate/11/03
DepuisHeure:17:46
joueur1=Petrus
joueur2ºcchus
joueur3 > joueur4 >
[Petrus]
ScoreCourantu
ScoreMax2
[Bacchus]
ScoreCourantQ
ScoreMax2
<jeu.ini>
Vous choisissez les séparateurs à votre convenance. Les mots entre []
définissent ici 3 sections. Vous pourriez simplifier en gérant 3
fichiers texte (general.ini, petrus.sav, bacchus.sav par exemple), et
pas de sections.
Ce ou ces fichiers sont considérés comme créés par l'appli, ce qui
simplifie beaucoup le parsing et la gestion d'erreur.
Pour créer ces fichiers, lire ou écrire dedans, j'utilise la classe
TIniFile de la VCL Borland. Vous pouvez vous en inspirer sans tout
implémenter, ce n'est pas bien compliqué à partir du moment où vous
savez manipuler des fichiers texte ligne par ligne.
Pour info :
Une seule propriété : FileName
"Don Miguel" <mickael.i@free.fr> a écrit
Je me suis dernièrement lancé dans l'adaptation d'un petit jeu
calculette sur PC. J'essaie donc de profiter de cette occasion pour
passer du C au C++. Dans ce jeu, il me serait pratique de pouvoir
avoir certaines données sauvegardées dans un fichier. J'utilise la
librairie Allegro, qui inclut des fonctions permettant d'utiliser
les fichiers très proches des fread, fopen, fwrite... de stdio.h
Voilà où je veux en venir: Peut-on stocker des objets dans un
fichier de la meme manière que n'importe quelle variable en C?
Non. Vous pourriez articuler votre démarche comme ça : Fortement
inspiré des fichiers ini de Windows, un fichier texte de ce genre:
<jeu.ini>
[general]
Top@
LeftE6
DepuisDate/11/03
DepuisHeure:17:46
joueur1=Petrus
joueur2ºcchus
joueur3 > joueur4 >
[Petrus]
ScoreCourantu
ScoreMax2
[Bacchus]
ScoreCourantQ
ScoreMax2
<jeu.ini>
Vous choisissez les séparateurs à votre convenance. Les mots entre []
définissent ici 3 sections. Vous pourriez simplifier en gérant 3
fichiers texte (general.ini, petrus.sav, bacchus.sav par exemple), et
pas de sections.
Ce ou ces fichiers sont considérés comme créés par l'appli, ce qui
simplifie beaucoup le parsing et la gestion d'erreur.
Pour créer ces fichiers, lire ou écrire dedans, j'utilise la classe
TIniFile de la VCL Borland. Vous pouvez vous en inspirer sans tout
implémenter, ce n'est pas bien compliqué à partir du moment où vous
savez manipuler des fichiers texte ligne par ligne.
Pour info :
Une seule propriété : FileName
"Don Miguel" a écritJe me suis dernièrement lancé dans l'adaptation d'un petit jeu
calculette sur PC. J'essaie donc de profiter de cette occasion pour
passer du C au C++. Dans ce jeu, il me serait pratique de pouvoir
avoir certaines données sauvegardées dans un fichier. J'utilise la
librairie Allegro, qui inclut des fonctions permettant d'utiliser
les fichiers très proches des fread, fopen, fwrite... de stdio.h
Voilà où je veux en venir: Peut-on stocker des objets dans un
fichier de la meme manière que n'importe quelle variable en C?
Non. Vous pourriez articuler votre démarche comme ça : Fortement
inspiré des fichiers ini de Windows, un fichier texte de ce genre:
<jeu.ini>
[general]
Top@
LeftE6
DepuisDate/11/03
DepuisHeure:17:46
joueur1=Petrus
joueur2ºcchus
joueur3 > joueur4 >
[Petrus]
ScoreCourantu
ScoreMax2
[Bacchus]
ScoreCourantQ
ScoreMax2
<jeu.ini>
Vous choisissez les séparateurs à votre convenance. Les mots entre []
définissent ici 3 sections. Vous pourriez simplifier en gérant 3
fichiers texte (general.ini, petrus.sav, bacchus.sav par exemple), et
pas de sections.
Ce ou ces fichiers sont considérés comme créés par l'appli, ce qui
simplifie beaucoup le parsing et la gestion d'erreur.
Pour créer ces fichiers, lire ou écrire dedans, j'utilise la classe
TIniFile de la VCL Borland. Vous pouvez vous en inspirer sans tout
implémenter, ce n'est pas bien compliqué à partir du moment où vous
savez manipuler des fichiers texte ligne par ligne.
Pour info :
Une seule propriété : FileName
C'est un peu la marteau pilon pour écraser la mouche, non ? Pourquoi pas
carrément XML, alors, si on tient réelement à la complexité. (Ce n'est
pas pour dire que ta solution ne convient jamais. Mais avant qu'il en
soit là...)
Son problème, tel que je l'ai compris, c'est de la persistance, toute
bête.
Je voulais surtout signifier que l'objet devait se sauver et se restaurer
L'intérêt d'un fichier de configuration, c'est précisement que
l'utilisateur peut l'éditer.
tout à fait. L'éditer et surtout le lire.
J'ai bien implémenté des classes de gestion de la configuration qui
lisent de tels fichiers. Je n'ai jamais choisi ce format quand c'est le
programme qui doit les écrire.
C'est un format Windows. Mais rien n'interdit de le réutiliser.
Pour info :
Une seule propriété : FileName
C'est un paramètre dans la ligne de commande, non ?
La propriété FileName est le nom complet du fichier INI, pas de l'appli.
C'est un peu la marteau pilon pour écraser la mouche, non ? Pourquoi pas
carrément XML, alors, si on tient réelement à la complexité. (Ce n'est
pas pour dire que ta solution ne convient jamais. Mais avant qu'il en
soit là...)
Son problème, tel que je l'ai compris, c'est de la persistance, toute
bête.
Je voulais surtout signifier que l'objet devait se sauver et se restaurer
L'intérêt d'un fichier de configuration, c'est précisement que
l'utilisateur peut l'éditer.
tout à fait. L'éditer et surtout le lire.
J'ai bien implémenté des classes de gestion de la configuration qui
lisent de tels fichiers. Je n'ai jamais choisi ce format quand c'est le
programme qui doit les écrire.
C'est un format Windows. Mais rien n'interdit de le réutiliser.
Pour info :
Une seule propriété : FileName
C'est un paramètre dans la ligne de commande, non ?
La propriété FileName est le nom complet du fichier INI, pas de l'appli.
C'est un peu la marteau pilon pour écraser la mouche, non ? Pourquoi pas
carrément XML, alors, si on tient réelement à la complexité. (Ce n'est
pas pour dire que ta solution ne convient jamais. Mais avant qu'il en
soit là...)
Son problème, tel que je l'ai compris, c'est de la persistance, toute
bête.
Je voulais surtout signifier que l'objet devait se sauver et se restaurer
L'intérêt d'un fichier de configuration, c'est précisement que
l'utilisateur peut l'éditer.
tout à fait. L'éditer et surtout le lire.
J'ai bien implémenté des classes de gestion de la configuration qui
lisent de tels fichiers. Je n'ai jamais choisi ce format quand c'est le
programme qui doit les écrire.
C'est un format Windows. Mais rien n'interdit de le réutiliser.
Pour info :
Une seule propriété : FileName
C'est un paramètre dans la ligne de commande, non ?
La propriété FileName est le nom complet du fichier INI, pas de l'appli.
a écrit
[...]C'est un peu la marteau pilon pour écraser la mouche, non ? Pourquoi
pas carrément XML, alors, si on tient réelement à la complexité. (Ce
n'est pas pour dire que ta solution ne convient jamais. Mais avant
qu'il en soit là...)
Son problème, tel que je l'ai compris, c'est de la persistance, toute
bête.
Je voulais surtout signifier que l'objet devait se sauver et se
restaurer lui-même.
Dans mon idée, les méthodes SaveScores() et RestoreScores() n'existent
pas, ce sont respectivement le destructeur et le constructeur (qui
nécessite au moins une ID d'instance, le nom du joueur dans l'exemple,
en paramètre).
Les ID d'instance sont elle-mêmes récupérées et sauvées par l'appli.
Et comme je disposais de TIniFile ... Ça me suggère d'ailleurs d'en
"cloner" une version simplifiée et portable.L'intérêt d'un fichier de configuration, c'est précisement que
l'utilisateur peut l'éditer.
tout à fait. L'éditer et surtout le lire.
En fait, dans la VCL, TIniFile descend de TCustomIniFile, tout comme
TRegistryIniFile. De cette façon, on peut travailler en mode "ficier
.ini" et ensuite (éventuellement) passer en mode "registre système".
J'ai bien implémenté des classes de gestion de la configuration qui
lisent de tels fichiers. Je n'ai jamais choisi ce format quand c'est
le programme qui doit les écrire.
C'est un format Windows. Mais rien n'interdit de le réutiliser.
Pour info : Une seule propriété : FileName
C'est un paramètre dans la ligne de commande, non ?
La propriété FileName est le nom complet du fichier INI, pas de
l'appli. TIniFile représente un fichier INI.
<kanze@gabi-soft.fr> a écrit
[...]
C'est un peu la marteau pilon pour écraser la mouche, non ? Pourquoi
pas carrément XML, alors, si on tient réelement à la complexité. (Ce
n'est pas pour dire que ta solution ne convient jamais. Mais avant
qu'il en soit là...)
Son problème, tel que je l'ai compris, c'est de la persistance, toute
bête.
Je voulais surtout signifier que l'objet devait se sauver et se
restaurer lui-même.
Dans mon idée, les méthodes SaveScores() et RestoreScores() n'existent
pas, ce sont respectivement le destructeur et le constructeur (qui
nécessite au moins une ID d'instance, le nom du joueur dans l'exemple,
en paramètre).
Les ID d'instance sont elle-mêmes récupérées et sauvées par l'appli.
Et comme je disposais de TIniFile ... Ça me suggère d'ailleurs d'en
"cloner" une version simplifiée et portable.
L'intérêt d'un fichier de configuration, c'est précisement que
l'utilisateur peut l'éditer.
tout à fait. L'éditer et surtout le lire.
En fait, dans la VCL, TIniFile descend de TCustomIniFile, tout comme
TRegistryIniFile. De cette façon, on peut travailler en mode "ficier
.ini" et ensuite (éventuellement) passer en mode "registre système".
J'ai bien implémenté des classes de gestion de la configuration qui
lisent de tels fichiers. Je n'ai jamais choisi ce format quand c'est
le programme qui doit les écrire.
C'est un format Windows. Mais rien n'interdit de le réutiliser.
Pour info : Une seule propriété : FileName
C'est un paramètre dans la ligne de commande, non ?
La propriété FileName est le nom complet du fichier INI, pas de
l'appli. TIniFile représente un fichier INI.
a écrit
[...]C'est un peu la marteau pilon pour écraser la mouche, non ? Pourquoi
pas carrément XML, alors, si on tient réelement à la complexité. (Ce
n'est pas pour dire que ta solution ne convient jamais. Mais avant
qu'il en soit là...)
Son problème, tel que je l'ai compris, c'est de la persistance, toute
bête.
Je voulais surtout signifier que l'objet devait se sauver et se
restaurer lui-même.
Dans mon idée, les méthodes SaveScores() et RestoreScores() n'existent
pas, ce sont respectivement le destructeur et le constructeur (qui
nécessite au moins une ID d'instance, le nom du joueur dans l'exemple,
en paramètre).
Les ID d'instance sont elle-mêmes récupérées et sauvées par l'appli.
Et comme je disposais de TIniFile ... Ça me suggère d'ailleurs d'en
"cloner" une version simplifiée et portable.L'intérêt d'un fichier de configuration, c'est précisement que
l'utilisateur peut l'éditer.
tout à fait. L'éditer et surtout le lire.
En fait, dans la VCL, TIniFile descend de TCustomIniFile, tout comme
TRegistryIniFile. De cette façon, on peut travailler en mode "ficier
.ini" et ensuite (éventuellement) passer en mode "registre système".
J'ai bien implémenté des classes de gestion de la configuration qui
lisent de tels fichiers. Je n'ai jamais choisi ce format quand c'est
le programme qui doit les écrire.
C'est un format Windows. Mais rien n'interdit de le réutiliser.
Pour info : Une seule propriété : FileName
C'est un paramètre dans la ligne de commande, non ?
La propriété FileName est le nom complet du fichier INI, pas de
l'appli. TIniFile représente un fichier INI.
J'avoue que je n'ai jamais trop compris l'intérêt du registre système
sous Windows.
J'avoue que je n'ai jamais trop compris l'intérêt du registre système
sous Windows.
J'avoue que je n'ai jamais trop compris l'intérêt du registre système
sous Windows.