Turbo pascal {$I-}

Fermé
Titouan - 3 sept. 2008 à 11:37
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 23 sept. 2008 à 13:19
Bonjour,
Je voudrait comprendre l'interet de {$I-} et {$I+}
J'ai cru comprendre que les erreurs étaient ignorées jusqu'a un appel a IOresult mon bout de prog

program test;
uses crt ,windos;
var a : integer
writeln('taper un nombre');
{$I-}
readln(a);
{$I+}
if IOresult <> 0 then
begin
writeln('Vous dever taper un nombre ');
end;
end.


En fait le pregramme ce bloque quand on met une lettre même si les erreur E S sont désactivées.

Merci
A voir également:

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
22 sept. 2008 à 13:19
IOresult est l'abréviation de Input Output result
{$I-} et {$I+} ne sont utiles que pour la gestion des erreurs lors de traitement de fichiers

Pour ton problème il vaudrait mieux faire quelquechose dans ce genre là :
function DemanderNombre:integer;
var s:string; n,code:integer;
begin
write('Taper un nombre : ');
readln(s); // ici on peut récupérer chiffres, lettres, ou mélange des deux
val(s,n,code); // la valeur de code est égale à la position
               // du 1er caractère qui n'est pas un chiffre
writeln(code);
if code=0 then result:=n // on recommence si nécessaire
          else result:=DemanderNombre;
end;
-1
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
23 sept. 2008 à 13:19
Voici un petit débugage, pour corriger ce quej'ai dit précédemment...
function DemanderNombre:integer;
var s:string; n,code:integer;
begin
write('Taper un nombre : ');
readln(s); // ici on peut récupérer chiffres, lettres, ou mélange des deux
val(s,n,code); // la valeur de code est égale à la position
               // du 1er caractère qui n'est pas un chiffre
if code=0 then result:=n // on recommence si nécessaire
          else result:=DemanderNombre();
end;
-1