Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2008
elorza elorza is offline
Miembro
 
Registrado: nov 2007
Posts: 41
Poder: 0
elorza Va por buen camino
Exclamation 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?
Responder Con Cita
  #2  
Antiguo 16-01-2008
Blackspike Blackspike is offline
Miembro
 
Registrado: dic 2006
Ubicación: Mallorca, Baleares
Posts: 29
Poder: 0
Blackspike Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 16-01-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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:

Código Delphi [-]
begin
  DecimalSeparator := '.';
  if jclStrings.StrIsNumber('0.5') then
  begin
    //
  end;
end;

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.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 18-01-2008
elorza elorza is offline
Miembro
 
Registrado: nov 2007
Posts: 41
Poder: 0
elorza Va por buen camino
Thumbs up

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;
Responder Con Cita
  #5  
Antiguo 18-01-2008
elorza elorza is offline
Miembro
 
Registrado: nov 2007
Posts: 41
Poder: 0
elorza Va por buen camino
Question

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!
Responder Con Cita
  #6  
Antiguo 18-01-2008
Avatar de PeterPunk
PeterPunk PeterPunk is offline
Miembro
 
Registrado: ene 2008
Ubicación: Vigo
Posts: 22
Poder: 0
PeterPunk Va por buen camino
Trim(const S: string)

cadena:= ' hola ';
cadena:= trim(cadena);

quedaría cadena = 'hola'
Responder Con Cita
  #7  
Antiguo 18-01-2008
elorza elorza is offline
Miembro
 
Registrado: nov 2007
Posts: 41
Poder: 0
elorza Va por buen camino
Thumbs up

Perfecto!

Thanks!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 21:46:55.


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
Copyright 1996-2007 Club Delphi