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 28-10-2008
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Question Determinar si un String se puede convertir a Integer

Hola

Imaginar que tengo algo así:

Código Delphi [-]
procedure TForm1.loquesea;
var
 cad,cad1 : String;
begin
  cad := '12';
  cad1 := 'casa';
end;

Esta claro que cad lo puedo utilizar como string y hacer un IntToStr, pero si lo hago con cad1, me dará error, lo que pasa es que yo no sé que valor va a tener ni cad ni cad1. Necesito alguna forma de saber si un String también puede ser integer.

Un saludo
Responder Con Cita
  #2  
Antiguo 28-10-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola David, puedes utilizar la función TryStrToInt.

Código Delphi [-]
var
 entero : Integer;
begin
 if TryStrToInt(Cad1, entero) then
  showmessage('Si es entero')
 else
  showmessage('No es entero');

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 28-10-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
TryStrToInt


... changos... Caro, que velocidad.
__________________

Responder Con Cita
  #4  
Antiguo 28-10-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Puedes utilizar un Try..except en la conversión:
Código Delphi [-]
try
  StrToInt(...)
  // correcto si llega aquí
except 
  // Incorrecto si llega aquí
end;

Si sabes que valores va a tomar (o mejor) uno que no vaya a tomar puedes utilizar StroIntDef:

Código Delphi [-]
i := StrToIntDef(cad1, -9999);
if (i := -9999) then begin
  // error al convertir
end;

También se puede usar el procedimiento Val (mira en la ayuda) que este lo tengo más olvidado.

Usando alguna de las tres no es muy difícil hacer una función del tipo: IsvalidInteger()

AÑADO: Veo que había más...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 28-10-2008
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
¿¿¿¿¡¡¡¡¡¡ TryStrToInt ...!!!!????

No tenia idea que esta función existía.... después de tantos años de estar "cacharreando" con Delphi pense que me las sabia casi todas jejejejejeje :-)

Yo hubiera utilizado laque propone Neftali... y de todas maneras, para el futuro creo que le servirá mas a nuestro amigo David (es mas general)

Código Delphi [-]
try
  Valor:= StrToInt(CadenaConUnPosibleNumero)
  // correcto si llega aquí
except 
  // Incorrecto si llega aquí
  Valor:= -1 // o que se yo
end;


a proposito, creo que hay un error en el codigo:

Código Delphi [-]
i := StrToIntDef(cad1, -9999);
if (i := -9999) then begin
  // error al convertir
end;

Se coló una asignación ( donde debería ir una igualdad...

Saludos,
Responder Con Cita
  #6  
Antiguo 29-10-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por gatosoft Ver Mensaje
No tenia idea que esta función existía.... después de tantos años de estar "cacharreando" con Delphi pense que me las sabia casi todas jejejejejeje :-)

...
Se coló una asignación ( donde debería ir una igualdad...

Yo tampoco la conocía. Y supongo que no debe estar disponible en todas las versiones de Delphi.

En cuanto a la asignación, es que estos días escribo desde el portátil y no acabo de acostumbrarme al teclado... (aun no me salen los mensajes demasiado mal, para lo que podría ser...)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 29-10-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por Neftali Ver Mensaje
Yo tampoco la conocía. Y supongo que no debe estar disponible en todas las versiones de Delphi.

En cuanto a la asignación, es que estos días escribo desde el portátil y no acabo de acostumbrarme al teclado... (aun no me salen los mensajes demasiado mal, para lo que podría ser...)
Yo odio el portatil por el mismo problema, no me acostumbro a su teclado tan incomodo.

Un Saludo.
Responder Con Cita
  #8  
Antiguo 31-10-2008
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
esta función es genial, no la conocia, al final no me ha hecho falta, pero si he descubierto que también existe,

TryStrToFloat

esta función es tremenda, porque puedes tener un TEdit, en el que permitas escribir sólo números y coma, y ya no tienes que comerte la cabeza si ha escrito cosas como "1,2,2" o ",,2' ahora le dejas escribir, si hace algo raro, usas esta función y le devuelves el error.

Saludos
Responder Con Cita
  #9  
Antiguo 31-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por David Ver Mensaje
esta función es genial, no la conocia, al final no me ha hecho falta, pero si he descubierto que también existe,

TryStrToFloat

esta función es tremenda, porque puedes tener un TEdit, en el que permitas escribir sólo números y coma, y ya no tienes que comerte la cabeza si ha escrito cosas como "1,2,2" o ",,2' ahora le dejas escribir, si hace algo raro, usas esta función y le devuelves el error.

Saludos
Hola

Y no seria mejor validar lo que se escribe antes de que "salte" el error?

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #10  
Antiguo 31-10-2008
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Hola

Y no seria mejor validar lo que se escribe antes de que "salte" el error?

Salud OS
Cómo se hace eso ?

Yo valido, que pueda escribir numeros y la coma, en el onkeypress, pero ya tener una función donde si ha escrito una coma, no pueda volver a escribir una, validar que si ha escrito dos comas, etc... es demasiado.

Normalmente el usuario escribe el número correctamente. Si hace algo como "9,,9", es que no se ha dado cuenta, al darle aceptar le sales con el mensaje
El número no es correcto, y ya lo escribe bien, es lo mismo que hace el edit de fechas, te deja escribir 10/14/2008, pero luego te dice que no es una fecha válida.
Responder Con Cita
  #11  
Antiguo 31-10-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Hola
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
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
Problema con consulta,'no se puede convertir tipo string a doble' look SQL 4 29-05-2008 22:00:00
Convertir un String a Integer Rafe Varios 2 12-08-2005 17:43:38
Como Convertir un dato Integer ó Float a String en FireBird???? AGAG4 Firebird e Interbase 8 04-12-2004 02:59:47
Convertir una Variable de String a Integer y Viceversa. aleidania Varios 1 13-07-2003 16:35:37
Convertir campo tipo number de oracle a integer o string Sóstrato OOP 1 13-06-2003 09:18:55


La franja horaria es GMT +2. Ahora son las 07:45:13.


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