Am 2016-06-26 um 14:27 schrieb Karoly Balogh (Charlie/SGR): > There's no exception. At least not specifically for Result. It is simply > variable passed by reference from the caller side, therefore it's not > initialized inside the function.
You mean when I have the following: -------------------------- function X : ansistring; begin end; var S : ansistring; S := X; -------------------------- Then S is a dangling pointer to nowhere? > And this is A., consistent with other var > parameters B., apparently also how Delphi does it. Actually, since managed > types are always passed by reference, this is not really a surprise, nor > an exception. Of course it is a surprise because the documenation says that managed types are always initialized. If I use a var parameter I am forced to use a variable (declared somewhere else) but the function result can also be used in expressions without any (direct) assignment to a variable. So it must behave like a locally declared variable IMO. If I use an intermediate variable like: -------------------------- function X : ansistring; var X1 : ansistring; begin Result := X1+'A'; end; -------------------------- then it is initialized while here -------------------------- function X : ansistring; begin Result := Result+'A'; end; -------------------------- I get garbage? That's a very strange behaviour and no longer Pascal, it's C with all its funny side effects. > var > a: ansistring; > a:=some_function(a); When you have a parameter then of course it depends on how the parameter is declared. The Result variable within a function is different and not a parameter. You cannot feed in any data here. I would consider this more like an out parameter but in case of managed types an initialization must take place somewhere (IMO in the function like for all other local variables too, where else?). And it is definitly a change with FPC 3 because all my programs relied on that managed types are initialized and suddenly they are not anymore. I am wondering what other surprises lurk here and there which I have just not found out. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal