Erreur code source pascal
Résolu
glennog
Messages postés
293
Date d'inscription
Statut
Membre
Dernière intervention
-
glennog Messages postés 293 Date d'inscription Statut Membre Dernière intervention -
glennog Messages postés 293 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Erreur code source pascal
- Code ascii - Guide
- Turbo pascal - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
2 réponses
C'est à ce moment là qu'il faut te servir des {$I-} et {$I+} dont on parlais dans ta discussion précédent À quoi sert {$I-} ou {$i+} dans programme PASCAL, afin de savoir à quelle étape du programme ça plante !
En l'occurence, le problème est dans le read, car en faisant un rewrite, tu effaces toutes les données du fichier, puis tu fais un write pour écrire dans le fichier, mais ta tête de lecture est alors à la fin du fichier, et il n'y a rien à lire à cet endroit là.
Pour lire la valeur que tu as écrite juste avant, il faut revenir au début du fichier avec seek.
En l'occurence, le problème est dans le read, car en faisant un rewrite, tu effaces toutes les données du fichier, puis tu fais un write pour écrire dans le fichier, mais ta tête de lecture est alors à la fin du fichier, et il n'y a rien à lire à cet endroit là.
Pour lire la valeur que tu as écrite juste avant, il faut revenir au début du fichier avec seek.
program exemple; uses KX; type fichier = file of integer; procedure traceIO(text:string); var io:integer; begin io:=IOResult; if io=0 then writeln(text,' : OK') else writeln(text,' : Error ',io); end; var nombre : integer; ffichier : fichier; begin nombre := 5; {$I-} assign(ffichier,'fichier.txt'); traceIO('assign'); rewrite(ffichier); traceIO('rewrite'); write(ffichier,nombre); traceIO('write'); nombre:=0; seek(ffichier,0); traceIO('seek'); read(ffichier,nombre); traceIO('read'); {$I+} writeln('nombre lu = ',nombre); end.