Cita:
Empezado por kuan-yiu
Mi problema con cantidades como: 1.627,63 o su otra versión 1,627.63, o esta 1627,63, o esta 1627.63; escritas tal cual en un edit, con el teclado numérico o con el otro o incluso copiadas desde un documento excel (ya he visto de todo en el manejo de la aplicación).
|
Yo usaría TMaskEdit en vez de edits normales. Estos componentes validan los datos introducidos mediante una máscara que defines tu, con lo que te evitas ese tipo de errores.
Cita:
Empezado por kuan-yiu
¿Cómo proceso esto? "strToFloat" no admite como números los que tienen ambos separadores o los transforma mal...
|
Código Delphi
[-]
type TConjuntoDigitosValidos = Set of Char;
function LimpiarFormatoNumero(Numero:String):String;
var contador :Integer;
CadenaAuxiliar :String;
ConjuntoValido :TConjuntoDigitosValidos;
begin
if Numero = ''
then Result := '0'
else begin
ConjuntoValido := ['0','1','2','3','4','5','6','7','8','9','-'];
ConjuntoValido := ConjuntoValido + [SysUtils.DecimalSeparator];
CadenaAuxiliar := '';
try
for contador := 1 to length(Numero) do
begin
if (Numero[Contador] in ConjuntoValido)
then begin
CadenaAuxiliar := CadenaAuxiliar + Numero[Contador];
end;
end;
if (CadenaAuxiliar = '') then CadenaAuxiliar := '0';
Result := CadenaAuxiliar;
except
Result := '0';
end;
end;
end;
Cita:
Empezado por kuan-yiu
¿Cómo detecto cual es la configuración de un ordenador?
|
Basta con comprobar los datos de las variables
SysUtils.ThousandSeparator
SysUtils.DecimalSeparator