Using out-declaration instead of var in Procedure-Call generates erratic behavior, no error
Original Reporter info from Mantis: jc99
-
Reporter name: Joe care
Original Reporter info from Mantis: jc99
- Reporter name: Joe care
Description:
A Procedure with normal and out-declared Parameters behave funny when both are passed with the same variable. But only on the second call (e.g. in a loop).
Please don't be Delphi-Compatible in this part.
Delphi won't run at all (also no error).
Steps to reproduce:
See - testprogram:
Additional information:
program PrjTestParameter;
{$IFDEF MSWINDOWS}
{$APPTYPE CONSOLE}
{$ENDIF}
{ $Define WorkAround1}
{ $Define WorkAround2}
Function Test(const Line:String;out Part1:string;{ifndef WorkAround2} out{
else}var{$endif} Part2:string):Boolean;
begin
result := length(Line)>1;
Part1:= copy(Line,1,1);
Part2:=copy(Line,2,length(Line)-1);
end;
var
BaseLine: String;
OneChar: string;
Baseline2: string;
begin
BaseLine := 'ABCDEFGHIJKLMNOP';
while Test(Baseline,OneChar,Baseline) do
begin
writeln(Onechar);
{$ifdef WorkAround1}
BaseLine2:=BAseline;
{$endif}
end;
readln;
end.
Mantis conversion info:
- Mantis ID: 28279
- Build: release
- Platform: Win & Linux
- Version: 2.6.4
- Fixed in version: 3.1.1
- Fixed in revision: 31201 (#9118146b)