<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Bo Berglund via fpc-pascal <<a href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a>> schrieb am Do., 13. Apr. 2023, 07:49:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">What is the use case for "out" compared to "var" when it seemingly is doing the<br>
same thing?<br>
Or is it exactly this:<br>
With "out" you get a pristine empty variable which you have to initialize if<br>
needed (setting its length in this case)?<br>
And you are ensured no stale data will be part of it?<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">When the compiler finds an "out" parameter in a call it does not need to check whether the variable you pass is has been written to. With a "var" parameter you'll get "variable not initialized" warnings/hints instead. </div><div dir="auto">It's the task of the called function then to provide a correct value for the parameter. </div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
><br>
>And if so, what is the rule for *when* to use var in function call argument<br>
>> lists for items that will be changed inside the called function and used<br>
>> afterwards<br>
>><br>
><br>
>The rule is simple: if you need to modify the parameter value itself (e.g.<br>
>changing a primitive type, changing a field in a record, changing an<br>
>array's length or data, changing the value of a class instance - but not<br>
>its fields!) you need to pass it as "var".<br>
>If it's a write only parameter you can even use "out".<br>
<br>
So "out" it is unless I need to use the existing data or append new data to it,<br>
in which case I need "var", right?<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Correct. </div><div dir="auto"><br></div><div dir="auto">Regards, </div><div dir="auto">Sven </div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div></div>