Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-09-2006
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 20
elcigarra Va por buen camino
Saber si un texto es un número

Existe alguna función para saber si un texto represanta algún número sin tener que recurrir al control de excepciones?
ej:
Código:
var
  Numero : string
begin
  if isNAN(StrToFloat(Numero)) then
   //.......
En este caso la función StrToFloat eleva una excepción de punto flotante. La pregunta es si existe alguna función que evalúe el texto antes de intentar realizar la operación...
Responder Con Cita
  #2  
Antiguo 29-09-2006
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 20
elcigarra Va por buen camino
perdón... en el ejemplo anterior supongan que a la variable número le doy un valor (que no sea un número) antes de la función "isNaN". Ya sé que no estaba inicializada en el ejemplo
Responder Con Cita
  #3  
Antiguo 29-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Este es parte de un ejemplo que puso Bicho en algun hilo.
En El evento OnKeyPress del edit o dbedit pon:
Código Delphi [-]
if key in ['0'..'9'] then
// Aqui pones lo que neceitas
Con esto si hay algun numero lo indica
Hay que buscar para encontrar
Saludos
Responder Con Cita
  #4  
Antiguo 29-09-2006
menavas menavas is offline
Registrado
 
Registrado: ago 2006
Posts: 7
Poder: 0
menavas Va por buen camino
buenas, yo utilizaria un bloque try... except


Código Delphi [-]
 try
  strtoint(key)
except
 //Colocas tu codigo para manejar la excepcion
end;
saludos!
Responder Con Cita
  #5  
Antiguo 29-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Podemos hacer algo así:
Código Delphi [-]
var
  Numero: String;
  Valor: Extended;
begin
  Numero:= '1,25';
  if TextToFloat(PChar(Numero),Valor,fvExtended) then
  begin
    // Aqui lo que quieras
  end;
end;
Responder Con Cita
  #6  
Antiguo 29-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Ya que estas por aqui seoane, quisiera que me evacuaras una consulta con respecto al codigo que pusiste.
Al usar variables, no estoy utilizando memoria adicional?
El uso de variables es mejor limitarlo o por el contrario un bite o mas no son gran desplome ?
Perdona que te haga esta pregunta en este hilo, pero se dio la ocasion.
Saludos Maestro
Responder Con Cita
  #7  
Antiguo 29-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Lo siento Caral, pero no te entiendo muy bien. A que te refieres con "usar variables". Y cuando dices que usa mas memoria, ¿con resecto a que otro metodo?.
Responder Con Cita
  #8  
Antiguo 29-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Gracias Seoane
Dicen que la pregunta mas tonta es la que no se hace
Al Hacer esto:
Código Delphi [-]
var
  Numero: String;
  Valor: Extended;
No Estas utilizando una Variable de tipo string?( Cadena de caracteres), que a su vez ocupa bytes de memoria?, puesto que el sistema tiene que almacenar (Guardar o Guardar espacio) para esta variable para definir posteriormente, (Fraccion de segundos) su valor?
La verdad seoane es simple curiosidad y tratar de aprender algo mas.
Saludos
Responder Con Cita
  #9  
Antiguo 29-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Ahora creo que ya se por donde vas, donde yo pongo:
Código Delphi [-]
  Numero:= '1,25';
  if TextToFloat(PChar(Numero),Valor,fvExtended) then

preguntas por que no uso:
Código Delphi [-]
  if TextToFloat('1,25',Valor,fvExtended) then

Lo hago por seguir el ejemplo que puso elcigarra:
Código Delphi [-]
var
  Numero : string
begin
  if isNAN(StrToFloat(Numero)) then

Con respecto a tu pregunta, la diferencia entre una y otra cosa es insignificante. Estamos hablando de microsegundos.
Responder Con Cita
  #10  
Antiguo 29-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Gracias
La verdad esto es lo que me gusta de este club y sus foros que una pregunta o una duda se puede convertir en un debate y creo que de eso se trata espero que con ampliar estas posibilidades elcigarra y otros muchos tengan mas criterio y enfonquen sus dudas con mas amplitud.
Repito Gracias por tu explicacion he insisto, Maestro.
Saludos
Responder Con Cita
  #11  
Antiguo 29-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por seoane
la diferencia entre una y otra cosa es insignificante. Estamos hablando de microsegundos.
Además en muchos casos el compilador de hecho desechará la variable. Y aún si no fuese el caso, yo prefiero "desperdiciar" unos cuantos a bytes y ganar legibilidad de código.

// Saludos
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
Saber el número de serie de la placa fer21unmsm Varios 3 30-12-2005 18:36:51
como saber el numero de renglones ddd_ddd OOP 4 27-10-2005 21:27:56
Saber numero de usuarios a un alias oscjae Conexión con bases de datos 1 16-05-2005 19:26:15
Quickreport Imprimir Texto procedente de BDD sin saber el numero de lineas Javier Buendia Impresión 1 22-02-2005 07:13:23
Saber el numero de caracteres de un memo judoboy Varios 1 20-06-2003 14:27:19


La franja horaria es GMT +2. Ahora son las 06:09:01.


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