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

Free Pascal Discussion :

Gestion des exceptions


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Gestion des exceptions
    Bonjour,

    Sur la fonction DirIsWritable, je rencontre une exception EFCreateError sur un certain type de disque dur externe connecté à un serveur Windows...

    Je peux évidemment l'ignorer en modifiant les options de Lazarus : Ignorer ce type d'exception [Debugger-Exception de langues] ce qui me dispense du message "Classe d'exception EFCreateError...." lorsque je "run".

    Mon problème c'est que je dois tester et utiliser plusieurs types de lecteurs (interne ou externe avec différents types de partitions) et donc je dois "jongler" avec ajouter l'exception dans la liste puis la supprimer pour tester avec d'autres types de lecteurs.

    Je me demande s'il est possible d'ajouter par programmation cette gestion de l'exception à une ligne donnée du programme et de l'enlever ensuite.

    Sachant évidemment qu'une fois compilé, un try except end suffit pour dispenser l'utilisateur final du message. C'est uniquement en debug que je "m'amuse".

    Je ne sais pas si je suis très clair.
    Merci cordialement.
    Gilles

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Salut,

    et si vous attrapez un type générique d'exception !?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TRY
        (* ---------- *)
     EXCEPT
        ON e :  Exception DO
          (* ---------- *)
     END;

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je crois que ma question n'est pas claire. Désolé. Voici plus de détails :

    Le code incriminé est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try
     if DirectoryIsWritable(ExcludeTrailingPathDelimiter(sNomDossier+SysToUTF8(FileData.Name)))
     then FStringGrid.Cells[3,FStringGrid.RowCount-1] := 'F'
     else FStringGrid.Cells[3,FStringGrid.RowCount-1] := 'N';
    except
      on eFCreateError do FStringGrid.Cells[3,FStringGrid.RowCount-1] := 'N';
    end;
    Il s'agit d'un code extrait d'un composant hérité d'un TCustomTreeView qui me fournit de manière dynamique (par clic sur le TreeView) l'arbo sur Win ou Nux et surtout sans latence car je contrôle le niveau de récursivité... donc le résultat s'affiche de manière quasi-instantanée...


    Bref, au passage du code lorsque je "run", j'obtiens :


    Evidemment je peux ajouter l'exception :


    Ainsi l'exception pour le lecteur L:\ disparaît... mais pour contrôler le code sur d'autres types de lecteurs, il faut que je la "rebranche" (par l'IDE)... et évidemment dans ce cas, je me la reprends ( l'exception pour L: ) au prochain test avant de tester les lecteurs M:, N:...

    Je me demandais s'il était possible d'avoir un code dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if Lecteur ='L:' then begin
    {$Débrancher l'exception eFCreateError}
     try //??? Encore utile ds ce cas ?
      if DirectoryIsWritable(ExcludeTrailingPathDelimiter(sNomDossier+SysToUTF8(FileData.Name)))
        then FStringGrid.Cells[3,FStringGrid.RowCount-1] := 'F'
        else FStringGrid.Cells[3,FStringGrid.RowCount-1] := 'N';
     except
        on eFCreateError do FStringGrid.Cells[3,FStringGrid.RowCount-1] := 'N';
     end;
    {$Rébrancher l'exception}
    end;
    Merci pour votre aide. Cordialement.
    Gilles
    Dernière modification par Invité ; 16/03/2011 à 09h26.

Discussions similaires

  1. [ADOConnect] gestion des exception en tout temps
    Par portu dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/04/2005, 19h01
  2. [ORACLE 9i] Gestion des exceptions
    Par sygale dans le forum SQL
    Réponses: 6
    Dernier message: 19/08/2004, 15h06
  3. Gestion des exception (EOleException)
    Par shurized dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/06/2004, 17h25
  4. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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