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

Langage Pascal Discussion :

Enregistrer une classe dans un fichier


Sujet :

Langage Pascal

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 22
    Points
    22
    Par défaut Enregistrer une classe dans un fichier
    J'ai déjà posté ce message à la suite d'un sujet mais comme c'est un peu hors sujet, je me permet de créer un nouveau sujet dédié.

    J'essaye d'écrire une classe dans un fichier mais je n'arrive pas à la relire après coup.

    Voici ce que je fais :
    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
    Type
      CFichierIndexClient = class
                              numeroLigneClient : integer;
                              numeroClient : string;
                              constructor init();
                              constructor init(varnumeroLigneClient : integer; varnumeroClient : string);
                              procedure store();
                              function positionClient(numClient : string) : integer;
                            end;
      TypeFichierIndexClient = file of CFichierIndexClient;
      .
      .
      .
    Var
      fichierIndex : TypeFichierIndexClient;
    Begin
      assign(fichierIndex,'cheminFichier');
     
      rewrite(fichierIndex);
     
      write(fichierIndex,self);
      close(fichierIndex);
    Le fichier se crée mais je n'arrive pas à en extraire les données....
    J'ai l'impression que ça me stocke uniquement l'adresse mémoire de la classe mais je n'en suis pas sûr....
    Quelqu'un pourrait m'éclairer et éventuellement me donner une solution possible (je pense a une conversion en enregistrement mais si on peut rester en objet, je préférerais)

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 945
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 945
    Points : 5 659
    Points
    5 659
    Par défaut
    Jao,

    Oui, tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    write(fichierIndex,self);
    self n'est qu'une adresse.

    Il n'y a rien de prévu en standard pour écrire toute une classe dans un fichier.

    D'ailleurs, les seules données intéressantes à stocker sont les ... données de ta classe.

    Plusieurs solutions, dans l'ordre de mes préférences, à condition qu'il y ait peu d'instances de la classe:

    - tu stockes en fichier texte, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    { f est le fichier de type text }
    writeln(f,numeroLigneClient);
    writeln(f,numeroClient);
    et pour relire, tu penses à relire dans le bon ordre.

    - tu transformes les données de ta classe en un enregistrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    type mesdonnees = record
      numeroLigneClient : integer;
      numeroClient : string;
    end;
     
    ....
    { les données de ta classe devenant }
      datas :  mesdonnees;
    et tu stockes le tout dans un fichier typé mesdonnees.

    Au passage, je ne comprends pas l'utilisation d'une chaine pour stocker numeroClient, c'est, a priori, une valeur qui devrait être un entier.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    C'est bien ce que je pensais, on ne peut pas vraiment stocker d'objet.
    Je vais donc opter pour l'enregistrement (j'aime bien et je trouve plus propre )

    Citation Envoyé par droggo
    Au passage, je ne comprends pas l'utilisation d'une chaine pour stocker numeroClient, c'est, a priori, une valeur qui devrait être un entier.
    En fait, le "numéro" est une sorte de code que l'on a appeler numero

    Merci de m'avoir éclairé

Discussions similaires

  1. [IO] Enregistrer une classe dans un fichier
    Par kase74 dans le forum Langage
    Réponses: 11
    Dernier message: 28/03/2012, 17h18
  2. Réponses: 3
    Dernier message: 13/02/2007, 17h54
  3. Sauvegarder/Lire une classe dans un fichier
    Par Rodrigue dans le forum C++
    Réponses: 10
    Dernier message: 10/09/2005, 14h12
  4. Réponses: 4
    Dernier message: 10/02/2005, 16h10
  5. [C#] [.NET] Lecture d'une classe dans un fichier
    Par niPrM dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/05/2004, 08h57

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