PDA

Ver la Versión Completa : Verificar si el valor introducido en un edit1.text es un numero o una cadena


ctronx
24-06-2004, 16:22:54
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:


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


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


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

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