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

Delphi Discussion :

[D6] Utilité de la procédure ASSERT


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 703
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 703
    Par défaut [D6] Utilité de la procédure ASSERT
    Question existentielle :
    - Quel est l'intérêt et l'utilité de la procédure ASSERT ?

    J'ai lu l'aide de Delphi, mais je ne vois toujours pas à quoi elle peut bien servir.
    Quelqu'un peut-il m'éclairer ...

    Merci.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Lung
    - Quel est l'intérêt et l'utilité de la procédure ASSERT ?
    Cela permet de valider des conditions particuliéres nécessaires à un traitement, en qq sorte de s'assurer de prérequis.
    Elles peuvent être dévalidées à la compilation par une directive.

    Dans le code suivant je m'assure que l'appel à la méthode se fait bien avec un objet initialisé. Lors de la phase de développement c'est à mon avis trés utile.
    Pour une version de production cela permet de remonter des erreurs de conception ou des cas non prévu au lieu d'un crash.
    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
     
    {*------------------------------------------------------------------------------
      Prépare et ouvre une requête SQL
      @param AQuery   Nom du composant TADOQuery utilisé
      @param AInstructionSQL   Requête SQL à exécuter
    ------------------------------------------------------------------------------*}
    procedure TdmPrincipal.NouvelleInstructionSQL(AQuery : TADOQuery; AInstructionSQL :String);
    begin
      Assert(AQuery<>Nil,'L''objet requête n''est pas initialisée.');
      Assert(AInstructionSQL <>'','La requête SQL est vide.');
      With AQuery do
      begin
       DisableControls;
       Close;
       SQL.Clear;
       SQL.Add(AInstructionSQL);
       Open;
       EnableControls;
      end;
    end;
    Pour plus de détails voir : http://smeric.developpez.com/java/astuces/assertions/
    et aussi
    http://fr.wikipedia.org/wiki/Programmation_par_contrat
    et enfin ce post à propos de Chrome:
    http://www.developpez.net/forums/sho...62&postcount=4

  3. #3
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 703
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 703
    Par défaut
    Et quelle est la différence avec un if avec un raise, ou un try ... except, ... ?

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Lung
    Et quelle est la différence avec un if avec un raise, ou un try ... except, ... ?
    Présenté comme ça, aucune si ce n'est une concision d'écriture.
    La directive suivante
    {$C+} ou {$C-} {$ASSERTIONS ON} ou {$ASSERTIONS OFF}
    permet de les gérer lors de la compilation sans ajout de bloc conditionnel du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          {$IFDEF DEBUG}
               if Query <> nil then raise Exception.Create('Query à nil');
          {$ENDIF}
    Ce n'est qu'une partie de la programmation par contrat, du peu que j'en connaisse.
    Elles permettent aussi de documenter ton code et de faciliter les tests.

  5. #5
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 703
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 703
    Par défaut
    D'accord.
    Je vois mieux.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/12/2014, 18h35
  2. Utilité des view et des procédures
    Par Greesize dans le forum Débuter
    Réponses: 4
    Dernier message: 12/04/2009, 21h54
  3. ProgressBar avec plusieurs procédures
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 08/09/2002, 18h03
  4. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27
  5. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08

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