On 21.11.2010 16:22, Max Vlasov wrote:
Hi,
I'm one of those developers who takes hints and warnings seriously and I
must say at least once a week it helps me find a bugs even before
running the program. So when I got a warning about some uninitialized
variable passed by reference (Delphi 5 is ok with such variable being
uninitialized), I thought what I should do to fix this, and the best
solution for this is changing the declaration from "var " to to "out "
(CMIIW).
But is it possible to do the same (partially, gradually or in any other
way) for the "legacy" code that keeps the interface compatibility with
Delphi. For example TStrignList.Find(const S: string; var Index:
Integer): Boolean; declares "var " so my existing fragments expecting
just an result from this call, got "Hint: Local variable "Index" does
not seem to be initialized" warning. But looking at the implementation
details it seems it is safe to change "var Index" to "out Index" and
possibly it is also safe for any delphi/lazarus code calling this method
I'm sure it is in any way not the first priority task (I can change the
corresponding calling fragments), but just interesting what others think
about it.
Here is an old bug report where "var" => "out" is discussed as well:
http://bugs.freepascal.org/view.php?id=11263
I suggest you to read all commants to find the one or other pitfall
regarding this (especially Jonas' comment 19338).
That said I personally think that TStringList.Find could be changed
indeed, as it is a) in an objfpc unit and b) the param isn't a reference
counted one. (But as I'm not a member of the FPC team, I have nothing
final/definite to say here ^^)
Regards,
Sven
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal