Bon je ne savais pas trop ou poster, je tente déja ici, car ca peut concerner irrlicht.
Je me demandais, comment enregistrer des données dans un fichier et les réutiliser plus tard.
Dans mes cours de C++ basique, on avait bossé sur les flux, et enregistré dans un fichier .txt des données numériques. Pour les relire, il fallait réouvrir ces fichier, et décoder ( la est toute la nuance ) les données pour ne pas faire d'erreur ( genre placer les 8 ou 9 premiers chifre dnas le premier double, et pas simplement le 1er ).
En utilisant Visual C++ et les MFC ( ds mon école ) on s'est servi de la sérialisation, méthode bien pratique qui permet d'enregistrer des infos de tout type tres facilement, de définir un type de fichier précis dans lequel elle seront gardées, puis de pouvoir le r'ouvrir tres facilement.
Grace à la méthode Serialize() des MFC, on peut enregistrer directements des instances entières, sans devoir enregistrer les parametres un par un, et surtout, redécoder tout cela lors de la réouverture.
Donc, je me demandais s'il existait en C++ ( peut être fourni avec irrlicht ?? ) des méthodes similaires pour enregistrer des données ( comme des objets instanciés ) dans un fichier, et les relire, sans devoir utiliser la méthode de " je transforme tout en caractères que j'enregistre un par un, puis je redécode tout le tsoin tsoin ... " ?
Enfin je suppose que cela existe, comment font les développeurs de soft sinon ? Ils utilisent tous visual ?
Hors ligne
En C++, sauf erreur, il n'y a pas de mystère. Il faut coder tes propres méthodes de Serialisation.
Irrlicht en a déjà des tonnes (utilisées par les fichier .irr et par irrEdit donc) qui stockent plein d'informations dans une syntaxe de type XML mais au final on a toujours une imbrication des sérialisations, exemple :
-Sérialisation d'un flottant
-Sérialisation d'un vecteur 3D (3 flottants)
-Sérialisation d'une matrice 4x4 (16 flottants)
-Sérialisation d'une scene node (X vecteurs 3D et Y matrices)
-Sérialisation d'une scène (X scene nodes)
Je sais pas si tu me suis mais ce que je veux dire c'est qu'il n'y a pas de méthode miracle, il faut imbriquer pour se réduire aux types de base au final... C'est ainsi que .NET procède pour permettre des sérialisations très propres et assez simples.
PS : Je sais pas pourquoi mais une petite voix dans ma tête me dit que j'avais rencontré un code avec dedans une sérialisation propre d'une structure en C.
Dernière modification par DeusXL (25-10-2006 21:47:49)
Hors ligne
La librairie C++, Boost::Serialize peut t'être utile
http://www.boost.org/
Hors ligne
Sisi je t'ai suivi, mais bon ya toujours une peite aide.
Ca te permet aussi d'enregistrer les données dans un type que tu choisis, et pas dans un fichier txt ?
Comme cela, tu as des exemples de fonctions d'irrlicht ( a part les irr ) qui "sérialisent" ?
Hors ligne
Moi j'ai décrit une démarche permettant de réduire la lourdeur du code mais au final tu dois toi-même l'adapter à tes besoins, dans Irrlicht, beaucoup de classes ont ces fonctions de Sérialisations/Désérialisations, utilisées notamment dans les .irr, à part ça je vois pas où il pourrait y en avoir.
@Aranoth : Je me doutais que Boost ou autres avaient une librairie dans ce genre, mais j'avoue avoir eu un peu la flème de chercher
Hors ligne
merci, je vais aller mater cela un peu
Hors ligne