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 :

Sauvegarde de tableaux dans des fichiers


Sujet :

Ada

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 25
    Points
    25
    Par défaut Sauvegarde de tableaux dans des fichiers
    Bonjour,

    Dans le cadre d'un projet je dois sauvegarder des données entrées par l'utilisateur (stockées dans des tableaux) pour pouvoir les réutiliser lors de la prochaine exécution du programme.

    Mes cours n'ont pas abordé ce type d'E/S, aussi j'ai lu ceux qui sont disponibles sur le site (cours de D. Feneuille). Si j'ai bien tout compris pour sauvegarder des tableaux il faut utiliser des fichiers "streams". J'ai essayé de faire un petit test mais le debugger me trouve des conflits entre les librairies Ada.Text.IO et Ada.Streams.Stream_IO.

    Voilà le code de mon test:


    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
     
    with Ada.Text_Io,Ada.Integer_Text_Io,Ada.Streams.Stream_IO;
    use Ada.Text_Io,Ada.Integer_Text_Io,Ada.Streams.Stream_IO;
     
    procedure Test_Sauv is
     
       type T_Entier is range 0..200;
       Entier:T_Entier:=12;
       Entier_2:T_Entier;
     
       Test_creation,Test_ouverture: File_Type;
       Acces_F,Acces_F_2:Stream_Access;
     
     
    begin
     
       Create(Test_creation,Name=>"fichier_test");
       Acces_F:=Stream(Test_creation);
       T_Entier'Write(Acces_F,Entier);
       Close(Test_creation);
     
       Open(Test_ouverture,In_File,"fichier_test");
       Acces_F_2:=Stream(Test_ouverture);
       T_Entier'Read(Acces_F_2,Entier_2);
       Close(Test_Ouverture);
     
       Put(Entier_2);
     
    end Test_Sauv;
    J'ai pas mal cherché sur le net de la doc sur le sujet, mais je trouve surtout des choses en rapport avec les fichiers textes. Si vous avez un lien vers de la doc de la librairie Ada.Streams.Stream_IO ce serait sympa.
    Ou mieux si vous pouvez me dire ce qui ne va pas dans mon code

  2. #2
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    Bonjour Heli (et bienvenue)

    Le phénomène que tu rencontre n'est en rien spécifique aux librairies d'entrée/sortie, mais concerne l'utilisation des noms qualifiés, et des importations. Je peux donc te suggérer de te documenter en priorité sur les pièges de l'utilisation des clauses use.

    Je peux t'en toucher un mot en résumé. Les clauses uses sont très pratiques pour alléger le code, et donc amméliorer sa lisibilité. Cependant, il est préférable de ne pas les employer directement dans le cas où on utilise plusieurs packages appartenant à des domaines similaires (ce qui est exactement le cas de ton programme), parce qu'un nom de fonction ou de procédure peut correspondre à plusieurs instances de fonctions ou de procédures.

    Imagine par exemple que tu as deux packages, le premier qui s'appel ABCD et l'autre qui s'appel DEFGH. Imagine maintenant que dans chacun de ceux-ci, tu as une procédure qui s'appel MaProcedure.

    Si maintenant tu fait ceci dans un programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    with ABCD;
    with DEFGH;
    use ABCD;
    use DEFGH;
    ... si dans ce programme tu appel MaProcedure, alors le compilateur n'a aucun moyen de savoir s'il s'agit de celle qui est dans ABCD ou de celle qui est dans DEFGH. Il faut appliquer quelque chose qui permette de lever l'ambiguïté.

    Dans ce cas, tu es bien sûre toujours obligé(e) d'utiliser les clauses with, mais il ne faut pas utiliser les clauses use. Et alors, au lieu d'appeler MaProcedure, tu appelera ABCD.MaProcedure, ou alors (selon ce que tu entend) DEFGH.MaProcedure.

    Pour aller plus loin, tu pourrais même employer une clause de renomage.

    fhemt ? (tu comprends?)
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Oui c'est bien ça. Avec un simple "Test_creation,Test_ouverture: Ada.Streams.Stream_IO.File_Type;" ça marche !

    J'ai du aussi préciser tous mes "date_error" mais la sauvegarde fonctionne à présent.

    Merci Hibou57 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/04/2015, 17h37
  2. addition de deux tableaux stockés dans des fichiers
    Par M77ATTAR dans le forum Débuter
    Réponses: 2
    Dernier message: 27/11/2012, 17h48
  3. [Débutant] enregistrer des tableaux dans un fichier .dat
    Par Titened dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/07/2012, 08h49
  4. Entête des tableaux dans les fichiers de sortie
    Par roro8 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 29/12/2009, 10h35
  5. Sauvegarder des variables des sessions dans des fichiers
    Par Hypnocrate dans le forum Langage
    Réponses: 4
    Dernier message: 19/11/2007, 12h37

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