Ver la Versión Completa : Quitar Puntos a Numeros
ingabraham
26-09-2012, 18:39:12
hola manejo delphi 7.
tengo unos datos numericos que poseen decimas
ej: x= 1.200,34
quiero quitarle los puntos a los miles y que las decimas me salgan con puntos.
a los que quieran saber es para armar un archivo plano.
el dato quedaria asi:
x= 1200.34
gracias espero me allan entendido lo k kiero.:D
kapcomx
26-09-2012, 19:03:17
puedes utilizar la funcion ansireplacestr
en esta pagina se explica mejor
http://delphiallimite.blogspot.mx/2007/08/operaciones-con-cadenas-de-texto-ii.html
Saludos:cool:
cloayza
26-09-2012, 19:10:51
Deberías hacer uso de DecimalSeparator y ThousandSeparator:
procedure TForm3.Button1Click(Sender: TObject);
var
value:Single;
begin
value:=1200.34;
Memo1.Lines.Add('Value:'+FloatToStr(value));
{Cambio Decimal=, Miles=.}
FormatSettings.DecimalSeparator:=',';
FormatSettings.ThousandSeparator:='.';
Memo1.Lines.Add('(9.999,9) Value:'+formatFloat('#,###.0',value));
{Cambio Decimal=. Miles=,}
FormatSettings.DecimalSeparator:='.';
FormatSettings.ThousandSeparator:=',';
Memo1.Lines.Add('(9,999.9) Value:'+formatFloat('####.0',value));
end;
Espero te ayude, saludos cordiales
ecfisa
26-09-2012, 20:34:56
Hola.
...
var
s: string;
begin
s := '1.200,34';
s := StringReplace(s, '.', '', [rfReplaceAll]);
s := StringReplace(s, ',', '.', [rfReplaceAll]);
ShowMessage(s);
...
Saludos.
ingabraham
27-09-2012, 00:23:36
exacto eso era lo que necesitaba.
gracias x su ayuda
pienso k el ultimo esta bien entendible , sin desmeritar a los demas
gracias a todos x su atención.;)
Pero más vale entiendas el fondo de la cuestión.
Un número no tiene ni puntos ni comas. Eso es el formato que se le añade cuando el número se convierte a texto con formato y el "decimalseparator" es precisamente lo que se usará cuando se quiere cambiar a texto.
Haciendo un stringReplace:
- primero: dejas que el sistema use el punto y la coma de forma errónea para la conversión a texto
- segundo: buscas en el texto carácter a carácter para reemplazar el punto por la coma. Encima son 2 reemplazos consecutivos.
Si desde el primer momento estableces el separador decimal y de miles, haces un programa eficiente.
cloayza
27-09-2012, 16:45:45
Y que pasaría si:
var
s: string;
begin
//Que pasaría si cambio el formato del número a:
s := '1,200.34'; //1.200,34
s := StringReplace(s, '.', '', [rfReplaceAll]); // 1,20034
s := StringReplace(s, ',', '.', [rfReplaceAll]); // 1.20034
ShowMessage(s); //1.20034 ?:confused:
...
Creo que no es la mejor forma...
Saludos cordiales
Casimiro Notevi
27-09-2012, 17:16:57
je, je, je...
var
s:string;
begin
s := '1,200.34';
s := StringReplace(s, '.', '@', [rfReplaceAll]); // 1,200@34
s := StringReplace(s, ',', '.', [rfReplaceAll]); // 1.200@34
s := StringReplace(s, '@', ',', [rfReplaceAll]); // 1.200,34
ShowMessage(s);
end;
ecfisa
27-09-2012, 17:27:43
Hola.
No había reparado que el dato estaba en formato numérico:
tengo unos datos numericos que poseen decimas
En ese caso:
var
s : string;
ch: Char;
begin
ch := DecimalSeparator;
DecimalSeparator := '.';
s := FormatFloat('0.00', ValorNumerico);
DecimalSeparator := ch;
...
Saludos.
ElMug
28-09-2012, 00:19:55
Depende de la base de datos, el aspecto visual de la data se puede corregir en lo que se llama "collation" y son ajustes parametrizados, o pueden formar parte de un query o meta-comando. La data guardada sigue igual.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.