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 :

[LG]fichier typé; record et pointeurs


Sujet :

Langage Pascal

  1. #1
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 75
    Points : 62
    Points
    62
    Par défaut [LG]fichier typé; record et pointeurs
    Salut voilà , j'essaie d'écrire un programme qui enregistre bêtement dansun fichier le nom et l'année de naissance de personnes.

    Vu les tutorials que j'ai lu, il faut utliser un record donc j'ai

    bla bla

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    type anniv : record
           nom : string;
          annee : integer; end;
    bref ce que je n'arrive pas a comprendre est dois je déclarer un fichier

    var f : file of anniv

    si oui comment mes données seront elle enregistrées dans le fichier

    le but du programme est d'entrer au fur et à mesure et de pouvoir lire les données après

    Merci

    Ali

    un bout du programme que j'essaie d'écrire.

  2. #2
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    bien le bonjour,

    Citation Envoyé par abbas
    bref ce que je n'arrive pas a comprendre est dois je déclarer un fichier

    var f : file of anniv
    oui, c'est la méthode à suivre, tes enregistrements seront rangés à la suite les uns des autres et tu y accèderas grâce à seek

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 97
    Points : 84
    Points
    84
    Par défaut
    Un record n'est pas un enregistrement d'un fichier, c'est un type qui contient plusieurs champs (dans ton cas anniv est un type qui contient les champs nom et annee).

    Après, il faut que tu déclares une variable (globale ou locale) de ce type, que tu fasses saisir les valeurs voulues par read(le_anniv.nom) et read(le_anniv.annee) où le_anniv est ta variable de type anniv.

    Donc, oui, il faudra que tu déclares un fichier contenant des types anniv (...par file of anniv...).

    Tes données vont être écrites dans le fichier par une commande de type

    write (f_anniv, le_anniv)

    et la lecture va se faire par

    read (f_anniv, le_anniv)

    Je te conseille la lecture de manuels de formation à Pascal, puis dans un deuxième temps la lecture de tutoriaux.

    Regardes-y les chapitres concernant les fichiers typés, les types record et du devrais pouvoir y trouver ton bonheur.

    On est à ta disposition pour du débogage de code.

    Bon courage


    [Edited] Ouupps, je me suis fait grillé
    bon, on dit à peu près la même chose
    [/Edited]

    [Edited le 16/04/04]Conseils tutoriaux après bouquins[/Edited]

  4. #4
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    Bonjour

    Merci pou vos réponses;
    en fait je penses avoir réussi a donner quelque chose

    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
     
    program anniv;
    uses crt;
    type birthday = record
         Name : string;
         Year : string;
    end;
    var c : string;
    var fiche : birthday;    
    var f : File of birthday;
    var i : integer;
    begin
    Assign(f, 'birth.txt');
    rewrite (f); 
    ClrScr;
    c := 'yes';
    while c = 'yes' do begin
    with fiche do begin
     
         writeln ('enter the name');
         readln(Name);
         writeln ('enter the year');
         readln(year);
         end;
       writeln ('Do you want to record again? say yes or no');
       readln (c);
                          end;
    write (f,fiche);
     
     
    reset (f);   
    read (f,fiche);
     
    readln;
    end.
    j'arrvie a voir les données enregistrées directement en ouvrant le fichier
    mais y'a t'il un moyen de les lister directement dans la fenêtre d'exécution?

    Merci

    Ali

  5. #5
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Il suffit d'afficher les champs du type un par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    writeln(fiche.name,'   ',fiche.year);
    Tu mets ca dans une boucle pour afficher tous les enregistrements du fichiers.

    a+

  6. #6
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Bon comme c'est a peu près la même post, je vais continuer celui ci.
    J'arrive bien à inserer les données à la fin.
    Ce que je veux c'est d'inserer un nouveau enregistrement à un endroit bien précis . J'ai déjà tester ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Seek(FAnniv,Num);
    Write(FAnniv,Recor);
    Mon problème c'est que l'enregistrement numero num est ecrasé.
    Y a t-il un moyen d'inserer proprement l'enregistrement sans ecraser l'existant, ou bien suis je obligé de bidouiller comme ce que je fais actuellement :
    • - Creation d'un fichier temporaire
      - parcours du fichier d'origine et recopie des enregistrement jusqu'au num
      - insertion de l'enregistrement
      - parcours du fichier d'origine de num +1 à fin de fichier et recopie dans le fichier temporaire
      - suppression du fichier d'origine
      - changement de nom du fichier temporaire à celui d'origine.
    C'est quand même long pour une simple insertion.

    Pareil pour la suppression de l'enregistrement.

    Merci de vos réponse.

  7. #7
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Non c'est la seule façon, on ne peut pas faire d'insertion dans un fichier...

    a+

Discussions similaires

  1. [TPW] Ecriture dans un fichier typé
    Par safowan dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 15/07/2007, 14h28
  2. Fichiers typés delphi 7 (débutant)
    Par tremeur53 dans le forum Débuter
    Réponses: 8
    Dernier message: 26/10/2006, 22h57
  3. Comment mettre un tbitmap dans un fichier typé.
    Par poly128 dans le forum Delphi
    Réponses: 7
    Dernier message: 16/10/2006, 00h00
  4. Réponses: 18
    Dernier message: 06/07/2006, 18h40
  5. Fichier typé et string
    Par nmathon dans le forum Langage
    Réponses: 4
    Dernier message: 13/01/2006, 15h55

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