On 13.06.2015 06:04, Martin Frb wrote:
program Project1;
procedure Foo1(a: AnsiString; out b: AnsiString);
begin
WriteLn(length(a)); WriteLn(length(b));
b := 'a';
end;
procedure Foo2(out a: AnsiString; b: AnsiString);
begin
WriteLn(length(a)); WriteLn(length(b));
b := 'a';
end;
const x: AnsiString = 'abcde';
var s1: AnsiString;
begin
s1 := copy(x,2,3)+'x';
Foo1(s1,s1);
s1 := copy(x,2,3)+'x';
Foo2(s1,s1);
ReadLn;
end.
The answer is simple: Don't pass a variable you pass as an out-parameter
also as a by-value or - even worse - const parameter. This is by design
and an error in /your/ code.
Regards,
Sven
_______________________________________________
fpc-devel maillist - [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel