If immédiat (ou immediate if > iif)

Soyez le premier à donner votre avis sur cette source.

Vue 4 569 fois - Téléchargée 212 fois

Description

Cette astuce permet d'alléger les codes tels que "If machin then lbl.caption := 'abc' else lbl.caption := 'cba';"...

Grâce à une simple fonction, ce code tient en une ligne (sans compter les lignes de la fonction !). Le principe est de renvoyer une valeur d'un type défini si la condition est vraie, et une autre si celle-ci est fausse...

Avec le mot réservé "overload" après la déclaration de la fonction, on peut déclarer plusieurs fonctions du même nom, ayant des types différents pour les paramètres.
J'ai implémenté deux fonctions : une avec des string et l'autre avec des integer. Je ne suis pas allé cherhcé les exemples d'application bien loin, mais le principe est là !!

Source / Exemple :


L'utilisation est dans le projet et l'implémentation des fonctions IIF dans l'unité uIIF.pas...

Conclusion :


Reste à dire que cette astuce n'est pas de moi, mais que je la trouve assez intéressant pour qu'elle soit placée sur le site !
Je dois cette "découverte" à Olivier Dahan et à Paul Toth, rédacteurs du livre "Delphi 7 Studio" !

Merci à eux deux, et bonne prog' à tout le monde !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Bestiol
Messages postés
871
Date d'inscription
dimanche 6 janvier 2002
Statut
Membre
Dernière intervention
3 novembre 2005
1 -
Désolé mais pour l'instant, le ZIP n'a pas l'air de vouloir passer...
Il ne fait pourtant que 4 Ko !
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
24 -
Pour les implémentations avec des integer, voir également la fonction IfThen déclarée dans l'unité math, livrée avec Delphi (extrait de l'aide en ligne) :

function IfThen(AValue: Boolean; const ATrue: Integer; const AFalse: Integer = 0): Integer; overload;

function IfThen(AValue: Boolean; const ATrue: Int64; const AFalse: Int64 = 0): Int64; overload;
function IfThen(AValue: Boolean; const ATrue: Double; const AFalse: Double = 0.0): Double; overload;

Description

IfThen teste l'expression passée en tant que AValue, et renvoie ATrue si elle est évaluée comme True ou AFalse si elle est évaluée comme False. Si le paramètre AFalse est omis, IfThen renvoie 0 ou une chaîne vide lorsque AValue est évaluée comme False.

Pour les chaînes, voir la même fonction déclarée dans StrUtils :
function IfThen(AValue: Boolean; const ATrue: string;
AFalse: string = ''): string;

Ca ne fait pas un peu double emploi ?
cs_bgK
Messages postés
136
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
19 janvier 2004
-
Une autre méthode pour écrire le code répétitif plus rapidement :
CTRL + J dans l'edi, puis le code (ifeb pour une structure if/else)

Sinon, ça fait un bon tutoriel sur la surcharge des fonctions.
cs_Bestiol
Messages postés
871
Date d'inscription
dimanche 6 janvier 2002
Statut
Membre
Dernière intervention
3 novembre 2005
1 -
Ah !! Désolé, je ne savais pas que ces fonctions étaient implémentées dans des unités de Delphi !! Et ils ne le disaient pas non plus dans le bouquin !
Bon, bah mon source sert à rien, alors ;o(

Bonne prog' quand même !
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
24 -
Un code source n'est jamais inutile s'il est une oeuvre de l'esprit et s'il démontre que l'on peut faire autrement, voire mieux...même pour arriver au même résultat.
Comme le dit bgk : "Sinon, ça fait un bon tutoriel sur la surcharge des fonctions" . C'est déjà çà !
Dans l'ensemble, je crois que nous ne prenons pas assez de temps de regarder ce que Borland nous a livré avec ses produits. Combien d'heures passées à se demander comment faire, alors que nous avions la réponse à portée de souris (ne pas confondre avec une couvée de souris ! ;-)).

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.