<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Feb 2, 2016 at 6:49 AM, Michael Van Canneyt <span dir="ltr"><<a href="mailto:michael@freepascal.org" target="_blank">michael@freepascal.org</a>></span> wrote:</div><div class="gmail_quote">[...]<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">No, the second is always better because safer.<br>
<br>
x := iif (Obj = nil, 0, Obj.Value);<br>
This will raise access violation as a normal function or you depend on compiler implementation for this special case. And you should remember an additional special case of function.<br>
<br>
x := iif Obj = nil then 0 else Obj.Value;<br>
Doesn't raise AV because it's a statement, not function.<br>
</blockquote>
<br></span>
It is not a statement, it is an expression.<br>
<br>
I prefer<span class=""><br>
  x := iif Obj = nil then 0 else Obj.Value;<br></span>
over<br>
  x := if Obj = nil then 0 else Obj.Value;<br>
<br>
Because it clearly differentiates between if (a statement) and iif (an<br>
expression)<br>
<br>
So the iif in either functional or expression form has my vote.</blockquote></div><div><br></div><div>+1. The function is more clear to me too.</div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div>Silvio Clécio</div></div></div>
</div></div>