Saludos!
Estoy aprendiendo a programar y tengo un problema bastante elemental con el cual espero me puedan orientar ya que no entiendo porqué no funciona.
Hice una función para validar enteros tal como la que sigue:
Código:
{
Función que lee un valor entrado y lo asigna a una variable entera si el dato
introducido es entero y que devuelve si se ha realizado la asignación.
}
Function esEntero(temp:string; out numero:integer):boolean;
Var
error,x:integer;
Begin
Val(temp,x,error);
If error=0 then
Begin
numero:=x;
esEntero:=true;
end
else
esEntero:=false;
end;
Esta función funciona bien, a no ser que exceda los límites del rango del tipo
Integer.
La cuestión es que he probado usando
Longint para las variables
x y
numero pero no entiendo porque no funciona (he leído y releído la ayuda y no encuentro el fallo).
Les adjunto lo que estoy probando:
Código:
{
Función que lee un valor entrado y lo asigna a una variable entera (64bits) si
el dato introducido es entero y que devuelve si se ha realizado la asignación.
}
Function esEntero64(temp:string; out numero:Longint):boolean;
Var
x:Longint;
error:integer;
Begin
Val(temp,x,error);
If error=0 then
Begin
numero:=x;
esEntero64:=true;
end
else
esEntero64:=false;
end;
Por si el error estuviera a la hora de llamar la función, aunque no creo, la llamo del siguiente modo en consola:
Código:
Var
temporal:string;
entero64:Longint;
Begin
Repeat
Write(' Introduce un entero: ');
Readln(temporal);
until esEntero64(temporal,entero64);
Writeln(' El numero introducido es: ',entero64);
Readln;
end.
¿Podrían darme alguna sugerencia?