IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ada Discussion :

Comment sauvegarder au format texte cette BD ?


Sujet :

Ada

  1. #1
    Invité
    Invité(e)
    Par défaut Comment sauvegarder au format texte cette BD ?
    Bonjour,

    je cherche comment enregistrer au format texte une liste chaînée de listes chaînées de listes chaînées de chaînes de caractères pour la recharger ensuite ?

    La structure ::=
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    type T_Bloc_Reponse;
       type Bloc_Reponse_Access is access T_Bloc_Reponse;
       type T_Bloc_Reponse is
          record
             Reponse : String_Access;
             Suivant : Bloc_Reponse_Access;
          end record;
       type T_Liste_Reponse is
          record
             Taille : Natural := 0;
             Tete,
             Dernier,
             Courant : Bloc_Reponse_Access;
          end record;
     
     
       type T_Bloc_question;
       type Bloc_question_Access is access T_Bloc_question;
       type T_Bloc_question is
          record
             question : String_Access;
             Suivant : Bloc_question_Access;
             Reponses : T_Liste_Reponse;
          end record;
     
     
       type T_Liste_question is
          record
             Taille : Natural := 0;
             Tete,
             Dernier,
             Courant : Bloc_question_Access;
          end record;
     
       type T_Bloc_User;
       type Bloc_User_Access is access T_Bloc_User;
       type T_Bloc_User is
          record
             Logname : T_Logname;
             Questions : T_Liste_Question;
             Suivant : Bloc_User_Access;
          end record;
       type T_Liste_User is
          record
             Taille : Natural := 0;
             Tete,
             Courant : Bloc_User_Access;
          end record;
     
     
       Data_Base : T_Liste_User;
    Dernière modification par Alcatîz ; 28/02/2007 à 21h27.

  2. #2
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Pour enregistrer au format texte et garder toute la structure tout ce que je peux te conseiller c'est de stocker dans ton fichier comme tu le ferais dans une base de donnée.

    Avec une base de donnée tu aurais une table par type record. Tu aurais des indices en auto_incremente et les pointeurs seraient stockés sous forme de clés étrangères.

    Après pour ce qui est de la représentation "physique" des données, tu peux le faire sous une forme plain-text, ou bien XML.
    Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci Celelibi,
    Pour le moment je ne comprend pas ce que tu me propose.
    Je souhaite ajouter, supprimer des données du fichier avec un editeur classique.

  4. #4
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Connais-tu les bases de données relationnelles ? Celles qui sont gérés par des SGBD comme MySQL, Postgresql, Oracle (et dans une moindre mesure Access).

    Ce que je te propose c'est de recréer partiellement un sgbd, mais de façon très spécifique à ta problématique.

    Le début de ton fichier texte peut par exemple ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    table:bloc_reponse
    # id, suivant, réponse
    1	2	première réponse
    2	3	deuxième réponse
    3	0	troisième réponse
     
    table:liste_reponse
    # la taille n'est pas stockée car elle sera recalculée à la lecture
    # tete, dernier, courrant
    1	3	1
    Ici les lignes qui commencent par # doivent être ignorées (elles peuvent ne pas faire parti de ton fichier). Dans la table bloc réponse, le premier champ est un id qui ne sert qu'à identifier la ligne de manière unique (de la même façon que tu le fais avec des pointeurs).
    Pour la table liste_reponse la taille n'a pas besoin d'être stockée dans le fichier car tu pourras la recalculer lors du parsing de ton fichier. Les numéro corresspondent à un id dans la table bloc_reponse.

    Ton fichier peut tout aussi bien être stocké en xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?xml version="1.0"?>
    <bdd>
    	<bloc_reponse>
    		<reponse id="1" suivant="2">
    			première réponse
    		</reponse>
    		<reponse id="2" suivant="3">
    			deuxième réponse
    		</reponse>
    		<reponse id="3">
    			troisième réponse
    		</reponse>
    	</bloc_reponse>
     
    	<liste_reponse>
    		<liste id="1" tete="1" dernier="3" courrant="1" />
    	</liste_reponse>
    </bdd>
    L'avantage du premier c'est qu'il est plus compacte et plus compréhensible quand on l'ouvre avec un éditeur de texte. Par contre avec xml il existe sûrement déjà des lib pour travailler avec. Donc tu as juste à transformer tes données sous forme noeuds xml, et la bibliothèque s'occupe elle-même de transformer en texte pour stocker dans un fichier texte. Pour la lecture c'est pareil, tu auras juste à transformer les noeuds xml pour qu'ils corresspondent à tes types de donnée.

    Tu peux trouver une lib Ada qui gère XML ici : https://libre.adacore.com/xmlada/
    Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci Celelibi,
    Pour l'instant (je vai relire) je ne comprend toujours pas
    Je ne vois pas trace de "logname" et "question". Peut etre d'autre table ?
    Si je comprend un minimum, il faut un fichier par table ?

    en faisant selon mes connaissances actuelle, je peux concevoir une fichier texte du genre :

    logname
    nombre de question
    question
    Nombre_de_reponses
    Liste des reponses
    ...
    ...
    question
    Nombre_de_reponses
    Liste des reponses
    ...
    ...
    logname
    nombre de question
    question
    Nombre_de_reponses
    Liste des reponses
    ...
    ...


    C'est simple, mais il y à peut-etre des inconvéniants ou des problème que je ne vois pas encore.

Discussions similaires

  1. Comment définir le format texte d'une expression
    Par mat120784 dans le forum QlikView
    Réponses: 4
    Dernier message: 19/12/2011, 14h58
  2. Comment enregistrer dans un format texte compréhensible
    Par Swiper dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/08/2007, 11h35
  3. Sauvegarder un email en format texte (Outlook 2007)
    Par _H²O_ dans le forum Outlook
    Réponses: 7
    Dernier message: 09/05/2007, 16h06
  4. [TRichEdit] Comment sauvegarder au format wmf ?
    Par PpPool dans le forum Composants VCL
    Réponses: 4
    Dernier message: 14/03/2005, 14h37
  5. Comment écrire un fichier texte au format MS-DOS ?
    Par fredfred dans le forum Langage
    Réponses: 9
    Dernier message: 20/01/2005, 09h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo