On 13/06/2015 19:55, Florian Klämpfl wrote:
procedure Foo1(a: AnsiString; out b: AnsiString);
procedure Foo2(out a: AnsiString; b: AnsiString);

So in Delphi it does not depend on this order. The "none out" is always nil.
Yes. Implementation specific behavior.


Really. Then Delphi documented that this (can) break ref counting?

Because if not, then the parameters are strings, which (except for const param) are properly ref counted, and can not become dangling pointers.

So unless Delphi documented that "out" breaks ref counting, then I consider this as documented behaviour.

To clarify:
* I consider "not passing a dangling pointer in a ref counted type)" as documented behaviour. * passing "nil" may well be implementation specific. It would be equally god if the string previously in the variable would be passed, or if the choice would depend on other factors (may that be surrounding code, optimization level, compiler settings or whatever)


_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to