Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como le saco la coma o el punto a un número? (https://www.clubdelphi.com/foros/showthread.php?t=1630)

DML 21-06-2003 05:24:41

Como le saco la coma o el punto a un número?
 
como le saco la coma o el punto a un número?
Estos ejemplos son de tamaños, el que es con coma es de win98 el de los puntos es de WinME.

Ej: 1,024,000 o 1.024.000 -----> 1024000

marcoszorrilla 21-06-2003 13:17:54

No veo clara tu pregunta. Si es un número no tendrá puntos ni comas como separador de millares, sino que dependerá del formato con que se muestre, es decir que el mismo número podrá verse con separador de millares o sin él, dependiendo del formato que le apliquemos.

Un Saludo.

igest2000 21-06-2003 14:23:58

Veamos no se si lo que tu te refeires, es que a ti te pasan una cadena con ese formato y quieres guardarla en una variable de tipo numerico (integer por ejemplo) o no.

SI es esto... usa StrToInt que creo que te sirve... sino deberías hacer lo siguiente:

Recorrer a cadena, y si la posicion actual es un numero la pasas a otra auxiliar y si es una coma o un punto no las metes en la auxiliar. De esta forma en la cadena auxliar te quedaría un numero al cual, ya le puedes apicar StrToInt (o lo que sea.. StrToFloat,...)

function quitaseparadores (cad: string): string;
var aux: string;
i,,jlong: integer;
begin
long:=cad[0]; // sacamos la longitud de la cadena original
j:=1; // sirve para indicar donde se inserta en la cadena aux
for i:=1 to long do
if ((cad[i]<>',')and(cad[i]<>'.') then
begin
aux[j]:=cad[i]; // copio en la cadena auxiliar
inc(j); // aumento j para insertar en la siguiente posicion
end;
end;

Espero que no tenga muchos fallo este codigo.... :D

elpinjum 23-06-2003 08:46:38

Para añadir algo al mensaje anterior, decir que delphi nos proporcina una serie de variables en las que nos dice que simbolo se esta usando para los separadores de miles, los decimales, el separador de fechas, ya que todo esto puede cambiar segun la configuración del ordenador (ver configuracion regional del panel de control de windows si no sabes de lo que te estoy hablando).

Si utilizas la variable "THOUSANDSEPARATOR" esta te devolvera el separador de decimales que esta usando windows en ese momento.

Por lo que propongo que el codigo del IF mandado en el mensaje anterior se sustituya por el siguiente:

if (cad[i]<>THOUSANDSEPARATOR) then

Con lo que siempre te funcionara el codigo sea cual sea tu configuracion en windows.

chutipascal 23-06-2003 09:46:03

En el panel de control->configuración regional->Número puedes cambiar el simbolo de separación de miles, puedes poner nada si te apetece.

Las variables de entorno de los separadores de miles y etc... solo tienen que ver con la presentación en pantalla o impresora (cuando windows escribe el número en un canvas) o cuando transformas un tipo númerico a cadena con por ej.: FloatToStr(x);
Si tratas los números como real, integer, currency puedes operar con ellos sin que te afecten las comas o los puntos.

Un saludo.


La franja horaria es GMT +2. Ahora son las 09:55:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi