Evaluations des paramètres d'une fonction
Salut tout le monde,
comme indiqué ici : http://delphi.developpez.com/faq/?pa...ees#ifimmediat
je fais un IF immédiat (comme l'opérateur ternaire en C) dont voici le code :
Code:
1 2 3 4 5 6 7
| function IIF( aCondition : Boolean; aResultVrai, aResultFaux : Integer ) : Integer;
begin
if aCondition then
Result := aResultVrai
else
Result := aResultFaux;
end; |
Puis je l'utilise dans l'exemple ci dessous
Code:
FIndexDsParent := IIF( FObjet = nil, FCount, FObjet.IndexDsGroupeParent );
Sauf qu'avant de rentrer dans le IIF, Delphi évalue les 3 paramètres, donc la condition et les 2 résultats possibles, et le second créé bien évidement une violation d'accés quand FObjet est nil.
Dans ce cas précis, il est bien évidement possible de faire avec un simple IF classique, mais j'aurrais voulu savoir s'il n'était pas possible de n'évaluer les paramètres que lorsque ceux ci sont utiles.
Ce serrait un peu comme quand on fait un
Code:
Result := (FObjet <> nil) and (FObjet.ValeurBool);
qui ne fait pas de violation d'accés car on ne teste la seconde opérande que si la première est True.
(pour cela décocher Evaluation booléenne complète dans les options du projet ou bien rajouter {$B-} comme instruction pour le préprocesseur).
Merci pour vos réponses.
Re: Evaluations des paramètres d'une fonction
Citation:
Envoyé par WebPac
Dans ce cas précis, il est bien évidement possible de faire avec un simple IF classique, mais j'aurrais voulu savoir s'il n'était pas possible de n'évaluer les paramètres que lorsque ceux ci sont utiles.
Ca n'est pas possible, quelle valeur serait passée à la fonction alors ?
Bloon