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.
![]()
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)
Cela permet de valider des conditions particuliéres nécessaires à un traitement, en qq sorte de s'assurer de prérequis.Envoyé par Lung
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.
Pour plus de détails voir : http://smeric.developpez.com/java/astuces/assertions/
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;
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
Tutoriels Delphi Win32/Delphi .NET/Oracle/PowerShell - FAQ Delphi - FAQ Delphi .NET
Beatus, qui prodest, quibus potest.
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)
Présenté comme ça, aucune si ce n'est une concision d'écriture.Envoyé par Lung
La directive suivante
permet de les gérer lors de la compilation sans ajout de bloc conditionnel du type :{$C+} ou {$C-} {$ASSERTIONS ON} ou {$ASSERTIONS OFF}
Ce n'est qu'une partie de la programmation par contrat, du peu que j'en connaisse.
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}
Elles permettent aussi de documenter ton code et de faciliter les tests.
Tutoriels Delphi Win32/Delphi .NET/Oracle/PowerShell - FAQ Delphi - FAQ Delphi .NET
Beatus, qui prodest, quibus potest.
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)
Partager