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

Reply via email to