CommentCaMarche
Recherche
Posez votre question Signaler

Erreur code source pascal [Résolu]

glennog 294Messages postés jeudi 3 janvier 2013Date d'inscription 19 novembre 2013Dernière intervention - Dernière réponse le 6 févr. 2013 à 02:18
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 ??
Lire la suite 
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
merci beaucoup pour ta correction et tes commentaires , ta correction repond à plusieurs questions que je me posais ,
merci
Ajouter un commentaire
Ce document intitulé «  erreur code source pascal  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.