FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Problemas para identificar si es un número
Hola,
tengo un problema con una funcion. Necesito saber si un variable "valor" de tipo String es un número o no. Esa variable la relleno de un campo de la base de datos. Utilizo la funcion StrIsNumber, pero tengo un pequeño problema. El separador de decimales tiene que ser "," porque si es "." me da que no es un número. ejemplo: jclStrings.StrIsNumber('0,5') --> true jclStrings.StrIsNumber('0.5') --> false y yo en la base de datos los tengo definidos con "." ¿Qué puedo hacer? |
#2
|
|||
|
|||
Buenas.
Una posible solucion que prodrias aplicar es usar la funcion StringReplace. Para usarlo creo recordar que necesitas declarar en las Uses SysUtils. jclStrings.StrIsNumber(StringReplace('0.5','.',',',[rfreplaceAll,rfIgnoreCase])) Te lo digo de memoria es decir no estoy seguro de si era asi, pero creo que quedaria solucionado tu problema. Saludos. |
#3
|
||||
|
||||
Hola,
No sé si la función que mencionas hace uso de la variable "DecimalSeparator" (definida si no recuerdo mal en "SysUtils") o qué. Si hiciera uso de dicha variable, tal vez podrías hacer que esta sea "un punto", por lo menos en el ínterin que llevas a cabo la tarea que sea. Es decir, si vale como digo sería algo como:
No sé porqué me da que no es una manera muy elegante de hacerlo, pero, en fin, tal vez pueda servir hasta dar con otra mejor solución. |
#4
|
|||
|
|||
Ok, ya lo he conseguido.
Escribo a continuación la función que he creado yo, por si a alguien le biene bien. Muchas gracias. function TGEST_Grafica.EsNumero(valor:String):Boolean; var dsep:Char; begin dsep:=decimalseparator; try begin decimalseparator:='.'; if (jclStrings.StrIsNumber(valor)) then Result:=true else Result:=false; end; finally decimalseparator:=dsep; //de esto modo te aseguras de dejar otra vez //como estaba end; end; |
#5
|
|||
|
|||
Pero sigo con estos número y me doy cuenta que algunos valores están en la base de datos como String y el primer caractere es un espacio en blanco, haber si me entendeis.
valor=' 0.5'. Pregunta: ¿conoceis alguna función que directamente pasándole un string le quita todos los espacios en blanco? ¿O se os ocurre alguna otra forma? Gracias de antemano! |
#6
|
||||
|
||||
Trim(const S: string)
cadena:= ' hola '; cadena:= trim(cadena); quedaría cadena = 'hola' |
#7
|
|||
|
|||
Perfecto!
Thanks! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Identificar el Alt+R | AGAG4 | Varios | 7 | 17-04-2010 04:18:46 |
Identificar la aplicacion | eliash | OOP | 4 | 07-02-2006 19:37:43 |
Identificar campos | torito | Conexión con bases de datos | 1 | 22-08-2005 19:05:23 |
Identificar el Tabulador | AGAG4 | Varios | 6 | 09-09-2004 11:26:09 |
Como identificar si la conexión es LAN o WAN | Lal0 | Firebird e Interbase | 4 | 08-11-2003 17:21:16 |
|