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

Turbo Pascal Discussion :

ReadLn et WriteLn sur fichier texte [TPW]


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut ReadLn et WriteLn sur fichier texte
    Bonjour,

    l'erreur se produit à l'entrée de la procédure affichage:
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    program test;
    uses wincrt;
    var
    f : text;
    choix : byte;
    procedure affichage_fichier ( var f : text );
    var
    ph : string;
    begin
    while not eof(f) do
    	begin
    		readln(f, ph);
    		writeln(ph);
    	end;
    end;
    procedure remplissage_fichier ( var f : text );
    var
    c : byte;
    ph : string;
    begin
    {$i-}
    reset(f);
    {$i+}
    if ioresult <> 0 then
    	rewrite(f);
    append(f);
    repeat
    	clrscr;
    	write('la pharse à saisie');
    	readln(ph);
    	writeln(f, ph);
    	repeat
    		write('saisir une autre phrase (1 pour oui et 0 pour non)');
    		readln(c);
    	until
    		c in [0..1];
    until
    	c = 0;
    end;
    procedure menu;
    begin
    writeln('1 : affichage du fichier');
    writeln('2 : remplissage de fichier');
    writeln('3 : quitter');
    end;
    procedure boucle ( var choix : byte );
    begin
    repeat
    	clrscr;
    	menu;
    	repeat
    		write('votre choix= ');
    		readln(choix);
    	until
    		choix in [1..3];
    	case choix of
    		1 : affichage_fichier(f);
    		2 : remplissage_fichier(f);
    		3 : donewincrt;
    	end;
    until
    	choix = 3;
    end;
    begin
    assign(f, 'D:\f.txt');
    boucle(choix);
    close(f);
    end.

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Avec si peu de précisions... Ton fichier n'est pas ouvert, utilise reset ou rewrite.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut

    merci..

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Bonsoir !

    Il serait plus naturel, me semble-t-il, d'ouvrir et de fermer le fichier à l'intérieur de chaque procédure.

    Une autre remarque, c'est que la valeur du paramètre f n'est jamais modifiée, donc il ne sert à rien d'ajouter le mot-clé var dans l'en-tête de la fonction. Le contenu du fichier change, mais la valeur de f ne change pas (c'est toujours le même fichier).

    En réalité tu n'as même pas besoin de paramètre, puisque tu travailles sur un seul fichier. Tu pourrais donc écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure affichage_fichier;
    Ou alors si tu tiens à conserver le paramètre, il faudrait lui donner un nom différent de celui de la variable globale, pour éviter la confusion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure affichage_fichier ( const pf : text );

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Foe,
    Citation Envoyé par Roland Chastain Voir le message
    En réalité tu n'as même pas besoin de paramètre, puisque tu travailles sur un seul fichier. Tu pourrais donc écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure affichage_fichier;
    Ça, c'est à éviter : les variables globales sont à proscrire.

    Et pour éviter de les utiliser par erreur, on construit le programme ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    program ....
     
    ..... toutes les fonctions
     
    Var
      ...
     
    Begin
    End.
    ce qui fait que toutes les fonctions définies avant les variables ne peuvent pas les utiliser.

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message

    Une autre remarque, c'est que la valeur du paramètre f n'est jamais modifiée, donc il ne sert à rien d'ajouter le mot-clé var dans l'en-tête de la fonction. Le contenu du fichier change, mais la valeur de f ne change pas (c'est toujours le même fichier).

    En réalité tu n'as même pas besoin de paramètre, puisque tu travailles sur un seul fichier. Tu pourrais donc écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure affichage_fichier;
    Ou alors si tu tiens à conserver le paramètre, il faudrait lui donner un nom différent de celui de la variable globale, pour éviter la confusion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure affichage_fichier ( const pf : text );
    On a commencé l'étude des fichiers depuis quelques semaines ; mon professeur nous a dit que chaque procédure ou fonction où le fichier est parmi ses paramètres, doit être déclaré avec une "var".

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Beo,
    Citation Envoyé par abdou monta Voir le message
    on a commencé l'étude des fichiers depuis quelques semaines, mon professeur nous a dit que [B]chaque[B] procedure ou fonction où le fichier est parmi ses paramétres, doit être déclarer avec une "var".
    Il se trompe :

    Var si la procédure/fonction désire modifier le fichier

    Const dans le cas contraire.


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

Discussions similaires

  1. [VBA-E] Calcul sur fichiers Texte
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/02/2007, 14h37
  2. Réponses: 2
    Dernier message: 29/05/2006, 09h54
  3. [VB.NET]Problème de lecture et écriture sur fichier texte
    Par zouhib dans le forum Windows Forms
    Réponses: 25
    Dernier message: 23/05/2006, 15h30
  4. Réponses: 11
    Dernier message: 17/05/2006, 10h48
  5. problème sur fichier texte
    Par vivelesgnous dans le forum Général Python
    Réponses: 6
    Dernier message: 26/04/2006, 20h08

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