Lo que propone ecfisa vale para las versiones mas antiguas de Delphi; en las mas nuevas es correcta la sinatxis que estas usando, es decir, acceder usando un registro.
Lo que haces mal es el intentar asignar el valor al registro global; una de dos:
1) O escribes directamente en el registro global del programa (es decir, te ahorras la variable Fmt)
Código Delphi
[-]
Application.Initialize;
FormatSettings.ThousandSeparator := '.';
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
Tene en cuenta que esta alternativa modificara la configuracion regional de Windows, y puede que otros programas funcionen mal debido a esto; lo podes solucionar agregando las lineas:
Código Delphi
[-]
Application.Initialize;
Application.UpdateFormatSettings := False;
Application.UpdateMetricSettings := False;
FormatSettings.ThousandSeparator := '.';
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
O lo que es mejor aun, creas tu propio registro TFormatSettings, tal y como venias haciendo, y luego cuando llamas a una funcion de conversion, lo pasas como argumento
Un ejemplo sencillo:
Código Delphi
[-]
var
Form1: TForm1;
MyFormatSettings: TFormatSettings;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.Add('1.23 - Usando MyFormatSettings: ' + FloatToStr(1.23, MyFormatSettings));
Memo1.Lines.Add('1.23 - Usando la configuracion del sistema: ' + FloatToStr(1.23));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MyFormatSettings := TFormatSettings.Create;
MyFormatSettings.ThousandSeparator := ',';
MyFormatSettings.DecimalSeparator := '.';
end;
En el memo se obtiene:
Código:
1.23 - Usando MyFormatSettings: 1.23
1.23 - Usando la configuracion del sistema: 1,23