Forum Imprimante

 Oublié Pass?
 Register
Rechercher
Voir: 779|Réponse: 2

Erreur code source pascal

[Copier lien]

Post sur le : 2012-09-10 06:51:51 |Tout les posts
Bonjour,
je suis débutant sur les fichiers en langage PASCAL , et j'ai essayé de m'exercer et j'ai fait ceci :
program exemple;
uses crt;
type fichier = file of integer;
var
     nombre : integer;
     ffichier : fichier;
begin
           nombre :=  5;
           assign(ffichier,'fichier.txt');
           rewrite(ffichier);
           write(ffichier,nombre);
           read(ffichier,nombre);
end.
mais à chaque fois que je compile , j'obtiens l'erreur :
Error 100: Disk read error;
Pourriez vous me dire ce qui ne va pas dans ce code ??
Réponse

Accessoires Signaler

Post sur le : 2012-09-10 08:01:29 |Tout les posts
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.
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.
Réponse

Accessoires Signaler

Post sur le : 2012-09-10 09:55:42 |Tout les posts
merci beaucoup pour ta correction et tes commentaires , ta correction repond à plusieurs questions que je me posais ,
merci
Réponse

Accessoires Signaler

Vous devez vous connecter d'abord connect | Register

Contact Us| Archive| Forum Imprimante

GMT+1, 2024-03-29 07:27

Powered by Discuz! 7.2

Release 20121101, © 2001-2024 Forum Imprimante.

Top