Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Verificar si el valor introducido en un edit1.text es un numero o una cadena (https://www.clubdelphi.com/foros/showthread.php?t=11755)

ctronx 24-06-2004 16:22:54

Verificar si el valor introducido en un edit1.text es un numero o una cadena
 
el titulo es muy descriptivo, lo unico que deseo es poder saber si el valor introducido en un edit es un numero o una cadena y en base a ello realizar cierta acción, ¿hay alguna funcion como isnumeric(); isstring(); ó algo parecido que me ayude a saber si es un texto o o numero.

Gracias por la ayuda que puedan darme.

roman 24-06-2004 16:31:46

Fíjate en el procedimiento Val:

Código Delphi [-]
procedure Val(S; var V; var Code: Integer);

S es la cadena que quieres probar, por ejemplo Edit1.Text. Val intenta convertir S en un número y lo coloca en V. Si S no representa un número entonces Code será distinto de cero e indicará el prmer carcater de S que no es número.

// Saludos

ctronx 24-06-2004 18:40:41

disculpa mi ignorancia, pero no me queda muy claro. Este procedimiento ya existe en delphi como funcion o algo asi?, yo lo genero?, val que codigo tiene ò como es que intenta convertir S en numero, en fin creo que no lo supe interpretar bien.


gracias

roman 24-06-2004 18:46:08

Cita:

Empezado por ctronx
Este procedimiento ya existe en delphi como funcion o algo asi?

Sí, disculpa, en efecto no quedaba claro. La función Val es una función incluida en Delphi y sólo te explicaba como se usa.

Se podría implementar una función isnumber usando Val, por ejemplo:

Código Delphi [-]
function IsNumber(S: String): Boolean;
var
  Number, Code: Integer;

begin
  Val(S, Number, Code);
  Result := (Code = 0);
end;

// Saludos

Lepe 24-06-2004 19:09:45

En delphi 6 tienes la funcion trystrtoint(cadena:string; valor:integer):Boolean

Código Delphi [-]
  var i:integer;
begin
  if TrystrToInt('123', i) then
     // si es un numero y el valor lo tienes en I
  else 
    // no es un número, en 'i' no sabe dios lo que habrá.

Este otro metodo lo propongo yo para validar cadenas. Lo que hace es eliminar los caracteres que no pertenece al ConjuntoValido
Código Delphi [-]
type TcharSet = set of Char;

function VAlidaCadena(const s : string; ConjuntoValido : TcharSet):string;
var i:integer;
begin
  Result := '';
  if length(s) >= 1 then
  for i:= 0 to length(s) do
    if s[i] in ConjuntoValido then
      Result := REsult +s[i];
end;

//forma de llamarlo:
procedure Mio()
const ChrValidos :Tcharset = ['0'..'9',',']; //solo permito valores numéricos y la coma decimal 
var s:string;
begin
  s:= '21334,00';
  cbotarifas.Text := validacadena(s,chrValidos);

Si validas caracteres sería algo así como chrvalidos:=['a'..'z','A'..'Z','ñ','Ñ']

Saludos y espero te sirva.

ctronx 24-06-2004 21:14:13

Gracias a ambos, probe lo de la Val ocupandola en la función que pusiste de ejemplo isnumber y funciono sin problemas, ya entendi bien como funciona y adapte a mis necesidades.

Paoti 26-06-2004 03:14:18

Hola ctronx!!!!



si tienes Delphi 6 o Delphi 7, ya hay varius funciones que te ayuidan a convertir uun cierto valor a otro, y si no puede hacer la conversion, no dispara un error, simplementye te devuelve un valor la funcion....


una de ellas es la que nos puso nuestro camarada Lepe....

trytostrtoint...

y hay mas....!



y muchas mirate la ayuda de delphi..... (ahi esta la pista... y tienes todo un manjar de funciones......) parte buscate en la red creo que se llaman las JExperts, me parece, son varias unidades con funciones...



que esten bien


La franja horaria es GMT +2. Ahora son las 23:53:24.

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