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]Problème d'écriture d'une variable dans un fichier


Sujet :

Langage Pascal

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2003
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 42
    Points : 35
    Points
    35
    Par défaut [LG]Problème d'écriture d'une variable dans un fichier
    Coucou,

    Encore ...

    Je désirerais avoir une petite réponse ... ( Je vais bientôt attaquer la procedure SAVE GAME dans mon jeu ) ;

    Je suis quasiment sur qu'il est possible d'écrire la variable A dans un fichier.

    J'ai essayer la chose suivante

    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
    Uses crt, dos ;
     
    Var A : char ;
    Var f : text ;
     
    [ ... ]
     
    Repeat 
     
    [ ... ]
     
    Assign ( f ,' C:\.......\....\..... . txt' ) ;
    Rewrite ( f ) ;
    Write ( a ) ;
    Close ( f ) ;
     
    Until 
     
    [ ... ]
     
    END.
    C'est grave docteur ???

    Please expliqeur moi ça bug !!! et que ça n'écris rien dans le fichier !!!

    AU SECOUR

    A {écrire dans ... }+

    Bruno

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 107
    Points : 279
    Points
    279
    Par défaut
    hum, TP, n'étant pas relié a un reseau de voyance, ne sait pas ou écrire A !!!
    un write ( f, a ) l'aiderais surement un peu, et de plus, si tu veux écrire des variables dans un fichier, je te conseil un fichier typé dit file of.

    je n'en dirait pas plus, car la réponse se trouve dans un tutoriel, celui de Cyberzoide entre autre...

    ++ Mathieu
    Chaque jour, l'homme crée des choses plus grandes, meilleures et sûres, et chaque jour, la nature crée des idiots plus performants. Pour l'instant, je pense que la nature gagne.

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 308
    Points
    4 308
    Par défaut
    Il faut que tu précises dans quel endroit tu veux écrire avec la procedure write. Le premier paramètre indique l'endroit où l'on écrit : si rien n'est spécifié, on écrit à l'écran, si une variable fichier ( de type text ) est spécifié, alors les variables passées en paramètres seront écrites dans ce fichier !!
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 308
    Points
    4 308
    Par défaut
    Oups on a posté au même moment !!
    Tu auras donc compris qu'il faudra remplacer write(a) par write(f,a).
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2003
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 42
    Points : 35
    Points
    35
    Par défaut
    Merci Beaucoup !!!

    L'avantage de la grève des enseignats c'est qu'on à tout lm'apremidi pour developper !

    Génial non !

    A +

    Bruno

  6. #6
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Grrr... Ca fous rien de ses journée, c'est pas croyable ! En prépa, ils refusent de faire grève les profs... Tu penses, ils sont trop bien payés pour ça !
    J'ai appris qu'ils étaient payés 1h30 pour 1h de cours...

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 308
    Points
    4 308
    Par défaut
    Bouh, le vilain !!! Il parle de la grève !!
    Pour information, il est interdit de parler de la grève sur les forums de developpez.com Si si, c'est dangereux, je vous assure !!
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  8. #8
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    C'est pas moi qui ai lancé le sujet...

    Mais si jamais ça gèene, je peux toujours virer mon message. Des fois qu'il aurait des esprits susceptiles.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 308
    Points
    4 308
    Par défaut
    Ah oui, mais ce n'est pas moi non plus qui est lancé le sujet, mais bon... ca ma couté cher
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  10. #10
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Pour revenir au sujet de depart,j'ai une petite question...
    Lors du developpement de mon jeu en delphi (merci encore a Sub0) j'ai remarqué que l'on ne pouvait sauvegardé un fichier avec des types differents de int,char,... cela vient de quoi?

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 308
    Points
    4 308
    Par défaut
    Si ton fichier a été déclaré en tant que "file of machin", tu ne pourras rentrer que des "machins" dans ton fichiers et pas des "bidules"... En théorie... Tu dois sûrement pouvoir faire un transtypage avant d'écrire les données dans le fichiers.
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  12. #12
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Il est tout à fait possible d'écrire tout ce que l'on veut dans un fichier.

    Tout dépend en fait de la manière dont tu veux être "assisté" par le compilateur Pascal, que ce soit TP7 ou bien Delphi.

    Si ce sont toujours les même types de données qui reviennent, par exemple un Char, un Integer et un Pointer, alors il te suffit de créer un enregistrement (record) qui regroupera ces types, et ensuite de créer un file of "record", comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    type
      TRec = record
        C: Char;
        I: Integer;
        P: Pointer;
      end;
     
    var
      f: file of TRec;
    Si, par contre, les types sont "quasi" aléatoires, alors je pense qu'il faut savoir se passer des fichiers typés, pour n'utiliser que des fichiers non-typés, qui offrent une plus grande souplesse dans leur gestion.

    Tout ce dont tu as besoin pour gérer ce type de fichiers, ce sont les procédures BlockRead et BlockWrite.

    Le seul "inconvénient" de ces procédures, c'est qu'il faut nécessairement indiquer au compilateur la taille des données à lire (ou écrire).

    Si on reprend l'exemple du dessus, ça donnerait ça :

    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
     
    type
      TRec = record
        C: Char;
        I: Integer;
        P: Pointer;
      end;
     
    var
      f: file; { Fichier non typé }
      R: TRec;
     
    begin
    Assign(f, 'FICHIER.EXT');
    Reset(f, 1);
    BlockRead(f, R, SizeOf(TRec));
    .
    .
    .
    Close(f);
    end;
    On remarquera le , 1 de Reset, qui indique que les éléments qui composent ce fichier sont d'une taille de 1 octet. Autrement dit, on peut lire des données dans ce fichier octet par octet.
    Mefie-toi, par défaut, la taille est de 128 octets.

    Pour plus de détails, demande.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  13. #13
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Merci en fait on avait trouvé une solution en mettant des int et on utilisait un case pour recupéré ce que l'on voulait en fonction du nombre.Mais si j'ai l'occasion de m'en resservir je te redemanderais.

  14. #14
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Ah oui, en effet, je n'avais pas évoqué la possibilité du case dans un record.
    Néanmoins, il n'y a pas que des avantages à utiliser cette structure. En effet, si on déclare un enregistrement comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    type
      TRec = record
        case Integer of
        0: (X: Integer);
        1: (S: string);
        end;
    Alros TRec aura une taille de 256 octets, alors que l'on ne voudra peut-être lire que 2 octets...
    Mais, en passant par les pointeurs et la mémoire dynamique, on arrive à faire ce que l'on veut.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

Discussions similaires

  1. Soucis d'écriture d'une variable
    Par cdossert dans le forum Langage
    Réponses: 3
    Dernier message: 02/05/2013, 21h37
  2. Lecture et écriture d'une ligne dans un ficher
    Par Progmeur dans le forum C++
    Réponses: 10
    Dernier message: 20/03/2013, 16h38
  3. écriture du contenu d'une variable dans un cookie
    Par laurentSc dans le forum Langage
    Réponses: 5
    Dernier message: 12/12/2009, 19h50
  4. Ré-écriture d'une ligne dans la fenetre
    Par Yorel2006 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/03/2009, 19h47
  5. Réponses: 17
    Dernier message: 09/03/2007, 19h13

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