Bonjour,
Savez-vous s'il existe en Pascal un équivalent à cette expression en C :
Merci,(test)?"Vrai":"Faux"
ZiP
Bonjour,
Savez-vous s'il existe en Pascal un équivalent à cette expression en C :
Merci,(test)?"Vrai":"Faux"
ZiP
Bonjour !
Je crois que cette fonction (qu'il faut écrire soi-même) répond à la question :
On peut s'inspirer de l'unité Delphi SJRDUsual.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 program Exemple; {$APPTYPE CONSOLE} function IIF(const b: boolean; const r1, r2: integer): integer; begin if b then result := r1 else result := r2; end; begin WriteLn(IIF(0>1, 1, 2)); // 2 ReadLn; end.
Mon site personnel consacré à MSEide+MSEgui : msegui.net
Bonjour,
On peut écrire cette fonction de manière plus générique, si le temps d'exécution n'est pas primordial :
On peut aussi utiliser la fonction IfThen présente dans les unités Math et StrUtils
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function IIF(const Condition: Boolean; const TrueResult, FalseResult: Variant): Variant; begin if Condition then result := TrueResult else result := FalseResult; end;
Les 3 dernières sont inline, donc rapides.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // StrUtils Function IfThen(AValue: Boolean; const ATrue: string; const AFalse: string = ''): string; overload; // Maths function ifthen(val:boolean;const iftrue:integer; const iffalse:integer= 0) :integer; inline; overload; function ifthen(val:boolean;const iftrue:int64 ; const iffalse:int64 = 0) :int64; inline; overload; function ifthen(val:boolean;const iftrue:double ; const iffalse:double =0.0):double; inline; overload;
Philippe.
Bonsoir,
La fonction IIF de Ph. B. correspond tout à fait à ce que je cherche !
Merci,
ZiP
Attention, une fonction n'est pas un opérateur, dans le cas de l'opérateur de sélection (? : ), seule l'expression correspondant à la valeur du booléen est évaluée, alors que dans un appel de fonction, les deux expressions sont évaluées. C'est pas toujours génant mais cela peut être une source d'erreur à l'exécution, supposons que l'on ait un tableau dont l'indice le plus grand vaut MAX :
ainsi
plante si I>MAX alors que
Code : Sélectionner tout - Visualiser dans une fenêtre à part IIF(I<=MAX,Tab[I],0)
passe comme une lettre à la poste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part (I<=MAX?Tab[I]:0)
cdlt
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager