Hay varias maneras..
1. Las funciones para aplicar formato a strings siempre cuentan con una version sobrecargada (overloaded) que reciben un parametro adicional; un record de tipo
TFormatSettings donde se especifica como se debe aplicar dicho formato
Ademas esta forma es thread-safe
2. Evidentemente, cuando no se usa la version sobrecargada, se emplea una variable FormatSettings, definida en System.SysUtils
Este record global es inicializado automaticamente por Delphi, y se carga con la informacion de la configuracion regional del sistema operativo. Asi que otra alternativa es modificar lo que tiene este registro global y todas las llamadas a las funciones ahora usaran la nueva configuracion.
Esta version no es thread-safe
Tambien existe una propiedad en el objeto Application, la
UpdateFormatSettings
que es una bandera Booleana. Por defecto esta a True, y significa que tu aplicacion al recibir una notificacion de Windows cuando el usuario cambia la config. regional, actua en consecuencia y actualiza el registro FormatSettings global; si optas por esta opcion, podrias considerar dejar esta opcion a False
Esas son las 2 formas mas generales, rapidas y faciles de implementar
Por otro lado, leyendo tu codigo parece que estas manipulando valores monetarios. En ese caso desaconsejo el uso de los tipos float, real, double, single, extended. Lo mas adecuado es usar el tipo Currency, que es representado internamente como un entero y por lo tanto tenes mayor precision; los numeros en coma flotante no son exactos y puede dar lugar a algunos "problemillas"
Para convertir de tipo Currency a string y viceversa podes usar las funciones:
Código Delphi
[-]
CurrToStr(1234.56);
CurrToStr(1234.56, RegistroTFormatSettings);
CurrToStrF(1234.56, TFloatFormat, que es un tipo enumerado, cada uno representa un tipo distinto de formato);
Sobre esta ultima variante CurrToStrF podes ver
aca ejemplos de uso y la salida
Saludos