{$mode objfpc}{$H+}
uses
SysUtils;
var
err : boolean;
procedure p;
var
AStr,AText: string;
AValue: int64;
begin
//This goes wrong, notice the AStr input and output
AValue:=1234567890;
AStr := Format('%0.n',[double(1.0)*AValue]); //1.234.567.890
AStr := Format('%s',[AStr]);
Writeln('Wrong:' +AStr); //Wrong: ????
if AStr<>'1,234,567,890' then
err:=true;
//This is Ok, notice the changed output AText
AValue:=2134567890;
AStr := Format('%0.n',[double(1.0)*AValue]); //2.134.567.890
AText := Format('%s',[AStr]);
Writeln('Ok:' +AText); //Ok 2.134.567.890
if Atext<>'2,134,567,890' then
err:=true;
end;
begin
ThousandSeparator:=',';
p;
if err then
halt(1);
end.