PDA

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.;)

Lepe
27-09-2012, 11:48:45
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.