Ver Mensaje Individual
  #1  
Antiguo 05-02-2010
ioco ioco is offline
Miembro
 
Registrado: ene 2010
Posts: 42
Reputación: 0
ioco Va por buen camino
Problema al validar enteros

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?
Responder Con Cita