On Sat, 30 Jun 2018, Willibald Krenn wrote:
Managed fields of records are "setup" ;)
I will add a section about this in the documentation, seeing that people
often confuse the 2 concepts.
In an ideal world, either the language would not let you write code that has
random behavior or the compiler would enforce this.
There is no random behaviour.
procedure global(memo1: TMemo);
begin
A:=X(3);
A[0] := 5;
A[1] := 4;
B:=X(3);
// the following will print 5 twice
memo1.lines.add('GlobalA0: %d',[A[0]]);
memo1.lines.add('GlobalB0: %d',[B[0]]);
B[0] is not initialized. Printing the contents can print anything.
A and B are different arrays, with length 3, The compiler ensures this.
But their content is not initialized. Printing the content may therefor
result in any possible vallue.
Your code in essence does the same as
Procedure something;
var
B : Array[0..2] of integer;
begin
Writeln(b[0]);
end;
And - Lo - it behaves the same...
Michael.
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel