Bonjour à tous,
J'ai lu qu'en ouvrant un fichier, il est possible d'utiliser les directives {$I-} et {$I+} ainsi que IORESULT pour gérer l'existence d'un fichier.
Pourrait-on m'expliquer pourquoi avec ce qui suit la condition ' IF IORESULT <> 0 '
n'est pas exécuté si le fichier n'existe pas?
Si le fichier 'vecteurs.txt' existe, j'obtiens
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 PROGRAM ouverture; VAR NomDeFichier: STRING; fichier: TEXT; BEGIN NomDeFichier := 'vecteurs.txt'; ASSIGN(fichier,NomDeFichier); {$I-} RESET(fichier); WRITELN('1.IORESULT: ', IORESULT); REPEAT IF IORESULT <> 0 THEN BEGIN WRITELN('Ce fichier n''existe pas.'); WRITE('Introduisez un autre nom de fichier: '); READLN(NomDeFichier); ASSIGN(fichier,NomDeFichier); RESET(fichier); WRITELN('2.IORESULT: ', IORESULT); END UNTIL IORESULT = 0 {$I+} END.
et sinon
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ ./ouverture (entre {}) 1.IORESULT: 0
Avec le programme modifié comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ ./ouverture (entre {}) 2
J'obtiens ça si j'introduis le nom d'un fichier existant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 REPEAT IF IORESULT = 0 THEN WRITELN('1.IORESULT: ', IORESULT) ELSE BEGIN WRITELN('Ce fichier n''existe pas.'); WRITE('Introduisez un autre nom de fichier: '); READLN(NomDeFichier); ASSIGN(fichier,NomDeFichier); RESET(fichier); WRITELN('2.IORESULT: ', IORESULT); END UNTIL IORESULT = 0
mais ceci avec un nom de fichier inexistant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ ./ouverture (entre {}) Ce fichier n'existe pas. Introduisez un autre nom de fichier: vecteurs 2.IORESULT: 0
Bref, je n'obtiens jamais la répétition qui permettrait de continuer jusqu'à ce que le nom correct soit introduit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ ./ouverture (entre {}) Ce fichier n'existe pas. Introduisez un autre nom de fichier: machin 2
Je travaille avec Free Pascal 2.4.0-2 sur Debian Stable.
Merci d'avance,
G.
Partager