PDA

Ver la Versión Completa : Determinar si un String se puede convertir a Integer


David
28-10-2008, 15:24:11
Hola

Imaginar que tengo algo así:


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.


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:

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:

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)


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:


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
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
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
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
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 (http://www.clubdelphi.com/foros/showthread.php?t=51465)