Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Saber si una cadena es un número válido (https://www.clubdelphi.com/foros/showthread.php?t=53326)

rauros 18-02-2008 19:33:20

Saber si una cadena es un número válido
 
Como se puede pedir un request de si algo es un numero?

Ex:

If edit1.text = num then

Gracias

dec 18-02-2008 19:34:39

Hola,

Si se trata de buscar un número entero tal vez podrías utilizar la función "TryStrToInt". ;)

egostar 18-02-2008 19:35:35

Lo mas rapido que se puede contestar a tu hilo es

Lee nuestra guia de estilo

Salud OS

PD, lo de la comparación es así

Código Delphi [-]
If StrtoInt(Edit1.Text) = num then begin

end;
o

Código Delphi [-]
If Edit1.Text = IntToStr(Num) then begin

end;

Faust 18-02-2008 19:35:39

Wow ¿cuántos mensajes responde Dec por minuto?

rauros 18-02-2008 19:39:46

No no eso no. Quiero comprobar que si lo que hay escrito en edit1.text es un numero o es otra cosa.

dec 18-02-2008 19:41:22

Hola,

Código Delphi [-]
var
  dummy: integer;
begin
  if TryStrToInt(Edit1.Text, dummy) then
  begin
    // Edit1.Text contiene un número entero, está en "dummy"
  end
  else
  begin
    // Edit1.Text no contiene un número entero "válido".
  end;
end;

egostar 18-02-2008 19:42:35

Cita:

Empezado por rauros (Mensaje 266705)
No no eso no. Quiero comprobar que si lo que hay escrito en edit1.text es un numero o es otra cosa.

Ya ves la importancia del titulo de los hilos? ;)

Ya hay algunos hilos donde se comenta eso mismo, al final de este hilo hay varios hilos que te pueden ayudar.:cool:

Salud OS

dec 18-02-2008 19:44:05

Hola,

Cita:

Empezado por egostar
Ya ves la importancia del titulo de los hilos?

Ya hay algunos hilos donde se comenta eso mismo, al final de este hilo hay varios hilos que te pueden ayudar.

Antes o después de que yo lo editase, porque (ya no lo recuerdo) el título del hilo no iba muy acorde con el tema. Hay que revisar la guía de estilo rauros. ;)

rauros 18-02-2008 19:44:07

Sorry, la próxima vez pondré un titulo acorde mis peticiones de ayuda.

Faust 18-02-2008 19:45:57

Yo recuerdo que hace muchísimo tiempo hacía esto con una función que me inventé;

Código Delphi [-]
function IsInteger(const ATexto: string)boolean;
begin
  Result:= True;
  Try
    StrToInt(ATexto)
  Except
    Result:= False
  end;
end;

O algo así, ya no me acuerdo.

rauros 18-02-2008 19:46:50

Okey, ahora cuando intento meter en un label una suma no me deja por que dice que es string. Como transformo string a int? (longin)

He probado con StrtoInt(num3, label5.caption);

Hay que transformar num3 (int) a label5.caption (string)

Delphius 18-02-2008 19:50:22

Hola rauros, la respuesta a tus duda buscando StrToInt en el buscador, y también creo hay algo llamado ayuda. Sino me equivoco se presiona F1.

Por cierto, se usa así:
Código Delphi [-]
algo := StrToInt('12');

Saludos,

egostar 18-02-2008 19:50:34

Cita:

Empezado por rauros (Mensaje 266714)
Okey, ahora cuando intento meter en un label una suma no me deja por que dice que es string. Como transformo string a int? (longin)

He probado con StrtoInt(num3, label5.caption);

Hay que transformar num3 (int) a label5.caption (string)

Código Delphi [-]
Num3 := StrtoInt(Label5.Caption);

Pero lo mejor sería hacer lo que Dec te está recomendando, así validas que pueda convertirse.

Salud OS

Ivanzinho 18-02-2008 19:51:15

Pulsa F1 sobre StrToInt en el editor de código de delphi y se te abrirá una pantalla con la ayuda sobre esa función.

Un saúdo.

egostar 18-02-2008 19:52:44

Cita:

Empezado por dec (Mensaje 266708)
Hola,



Antes o después de que yo lo editase, porque (ya no lo recuerdo) el título del hilo no iba muy acorde con el tema. Hay que revisar la guía de estilo rauros. ;)

El titulo original era Pregunta Rápida :cool:

Salud OS

rauros 18-02-2008 19:56:39

Si conozco la respuesta rápida, pero lo que no conozco es si el nombre de la función era esa. De todos modos, al buscar strtoint me salen unas cosas que me dan dolor de cabeza, lo siento pero estaré por lo menos dando por culo un mes por aquí :S . Es que hasta que no aprenda el lenguaje no voy a poder usar la ayuda rápida...

rauros 18-02-2008 20:03:08

Okey, ahora tengo esto:

Código Delphi [-]
if TryStrToInt(Edit1.Text, num1) and TryStrToInt(Edit2.Text, num2) then begin
num3:=num1 + num2;
num3 := StrtoInt(label5.caption);
end
else
edit1.text:= '';
edit2.Text:= '';
end;

Hasta que no pulso el botón que carga esto bien. Después me da un error muy pesado. It's not a valid integer value o algo parecido.

egostar 18-02-2008 20:07:00

Cita:

Empezado por rauros (Mensaje 266728)
Okey, ahora tengo esto:

Código Delphi [-]
if TryStrToInt(Edit1.Text, num1) and TryStrToInt(Edit2.Text, num2) then begin
num3:=num1 + num2;
num3 := StrtoInt(label5.caption);
end
else
edit1.text:= '';
edit2.Text:= '';
end;

Hasta que no pulso el botón que carga esto bien. Después me da un error muy pesado. It's not a valid integer value o algo parecido.

Creo que tu problema es este

Código Delphi [-]
num3 := StrtoInt(label5.caption); //Label5 me imagino que tiene algún dato o esta vacio.

Y creo que lo que quieres asignar el resultado de la suma al Label5.

Código Delphi [-]
Label5.Caption := InttoStr(Num3); // Es el proceso inverso de StrtoInt

Salud OS

Delphius 18-02-2008 20:12:09

rauros, tu problema se explica muy fácil:

Las funciones XxxToYyy lo que hacen es convertir el tipo xxx al tipo Yyy, siempre y cuando no produzca un error (mejor dicho excepción).

TryXxxToYyy lo que hace es prevenir esas excepciones y sino detecta error la almacena en la variable.

La ayuda es muy clara, si entiendes inglés.

Saludos,

rauros 18-02-2008 20:18:07

Okey. Como pienso que xxxtoyyy será IntToStr como StrToInt es, cuando se pueda. Pero con esto no me funciona.

Código Delphi [-]
begin
if TryIntToStr(Edit1.Text, num1) and TryIntToStr(Edit2.Text, num2) then begin
num3:=num1 + num2;
num3 := IntToStr(label5.caption);
end
else
edit1.text:= '';
edit2.Text:= '';
end;

De todos modos lo busqué en la ayuda rápida pero no existe ningun trytoint...

Ivanzinho 18-02-2008 20:23:48

deberías cambiar

Código Delphi [-]
num3 := IntToStr(label5.caption);
por
Código Delphi [-]
label5.caption := StrToInt(num3);

Un saúdo.

dec 18-02-2008 20:24:14

Hola,

Cita:

Empezado por rauros
Pero con esto no me funciona.

Es bueno que cuando algo no funcione y se plantee el asunto en los foros se copie exactamente el mensaje o mensajes de error que nos encontramos. Y explicar cuanto se pueda el error, si ocurre en tiempo de diseño, si en tiempo de ejecución, en fin. Hazte a la idea que decir "no me funciona" no aporta nada de información y así es complicado tratar de ayudarte.

Ivanzinho 18-02-2008 20:29:41

Cita:

Empezado por rauros
De todos modos lo busqué en la ayuda rápida pero no existe ningun tryintto...

¿Qué versión de Delphi estás utilizando?, creo que esa función está disponible a partir de Delphi 6. Si tienes una anterior tendrás que crear tu la función con un bloque try .. except .. end como te comentan en un post anterior.

Un saúdo.

egostar 18-02-2008 20:32:41

Ya leiste lo que se dijo en el post numero 18 y en el 21 ????

Salud OS

rauros 18-02-2008 21:45:17

Vale. Probando y probando lo he resuelto. Muchísimas gracias.


La franja horaria es GMT +2. Ahora son las 19:46:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi