IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Pascal Discussion :

[LG] directives compilateur


Sujet :

Langage Pascal

  1. #1
    FB
    FB est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 3
    Points : 4
    Points
    4
    Par défaut [LG] directives compilateur
    j'ai pu trouver sur ce forum une fonction de test d'existence de fichier et dedans j'ai trouvé qq instructions que je connais pas. Et j'aime comprendre ce que je fais.

    {$I-}, {$I+} : ça permet de dire on se fiche des erreurs/on ne s'en fiche plus, c'est bien ça?
    IOResult : y a-t-il eu erreur oui/non?

    merci bc

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Oui c'est exactement ça. La directive de compilation {$I} permet de déterminer si une erreur doit interrompre le programme ou être gérée par le programme. Si {I+} est activé c'est à la charge du programme de gérer les erreurs. Le code de ces erreurs est obtenu avec la variable IOResult. Si IOResult vaut 0, cela signifie qu'aucune erreur n'est apparue.

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Toutes les opérations d'entrées/sorties (E/S, I/O en Anglais) sont contrôlées par le système d'exploitation qui se charge de faire le lien entre le programme et les périphériques.

    Par E/S, on entend toute communication avec le disque dur ou un disque quelconque, mais aussi les entrées faites au clavier.

    La directive {$I+/-} permet de contrôler la réaction du système face à une erreur d'E/S.
    Dans l'état {$I+} (état par défaut), toutes les erreurs sont détectées et rapportées au programme. De fait, le programme plante s'il y a un problème.
    Dans l'état {$I-}, les erreurs sont toujours détectées, mais elles sont "passives", autrement dit aucune erreur n'est explicitement affiché, et par conséquent, le programme ne plante plus en cas de problème.

    Toutefois, s'il n'est pas agréable de voir son programme planter, il est quand même utile de savoir si l'opération prévue s'est correctement déroulée. On fait alors appel à la fonction IOResult qui recense la dernière erreur qui s'est produite, qu'elle soit active ou passive (même si en mode actif, on n'y fait jamais appel, le programme s'étant arrêté juste avant ! ).

    Généralement, on se contente de vérifier que IOResult est bien égal à 0 (pas d'erreur). Mais on peut avoir des informations plus précises en consultant le code d'erreur.

    Bref, en toute logique, il faut désactiver les erreurs actives avant d'effectuer une opération d'E/S, les réactiver à la fin, et vérifier que tout s'est bien passé.

    Un p'tit exemple avec l'entrée attendue d'un nombre entier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var
      i: Integer;
     
    begin
      WriteLn('Veuillez entrer un entier :');
     
      {$I-} { Désactivation des erreurs E/S }
      ReadLn(i);
      {$I+} { Réactivation des erreurs }
     
      if IOResult <> 0 then WriteLn('Vous n''avez pas entré un entier !')
      else WriteLn('Entier : ', i);
    end.
    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  4. #4
    FB
    FB est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    merci baeucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/07/2009, 01h41
  2. [langage]Compilateur PERL
    Par major2 dans le forum Langage
    Réponses: 4
    Dernier message: 07/02/2007, 21h52
  3. Newbie......compilateur et table de caractères
    Par Cyberf dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 21/08/2002, 14h29
  4. Compilateur natif ??? Kesako ???
    Par Riko dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 06/08/2002, 08h54
  5. La communauté Direct X est au repos?
    Par Shakram dans le forum DirectX
    Réponses: 21
    Dernier message: 18/07/2002, 23h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo