Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Determinar si un String se puede convertir a Integer (https://www.clubdelphi.com/foros/showthread.php?t=61166)

David 28-10-2008 15:24:11

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

Caro 28-10-2008 15:31:12

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

ContraVeneno 28-10-2008 15:31:40

TryStrToInt


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

Neftali [Germán.Estévez] 28-10-2008 15:33:55

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... :D:D:D

gatosoft 28-10-2008 21:56:12

¿¿¿¿¡¡¡¡¡¡ 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,

Neftali [Germán.Estévez] 29-10-2008 10:33:01

Cita:

Empezado por gatosoft (Mensaje 322976)
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...:D:D:D)

JoseFco 29-10-2008 14:27:44

Cita:

Empezado por Neftali (Mensaje 323051)
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...:D:D:D)

Yo odio el portatil por el mismo problema, no me acostumbro a su teclado tan incomodo.;)

Un Saludo.

David 31-10-2008 20:26:31

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

egostar 31-10-2008 20:59:51

Cita:

Empezado por David (Mensaje 323639)
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

David 31-10-2008 21:11:35

Cita:

Empezado por egostar (Mensaje 323645)
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.

cHackAll 31-10-2008 21:27:41

Hola


La franja horaria es GMT +2. Ahora son las 05:05:32.

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