Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-05-2007
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Poder: 19
fedelphi Va por buen camino
comparar nros de 15 digitos

Hola a todos, tengo una duda sobre como verificar si un numero grande esta dentro de un rango de valores. Primero trabajo con delphi7 y tengo un numero que puede tener entre 6 y 15 digitos, este numero representa un vale que se tiene que verificar que este fuera de un determinado rango <minimo> numero en cuestion <maximo>. Este numero es inicialmente un string. Entonces lo que hice fue convertirlo a int64 con la funcion strtoint64, pero por ejemplo al string 87654 lo convierte a 19350111864945784. Hay que considerar algo mas al trabajar con este tipo de datos int64?
este es el codigo que utilizo
Código Delphi [-]
var
  aux:string;
  numero:int64;
begin
  aux:=funcion_que_devuelve_el_string_con_el_numero
  numero:=strtoint64(aux);
Gracias
Fede
__________________
De lo que hay no falta nada!!!
Responder Con Cita
  #2  
Antiguo 12-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Hola fedelphi, yo no he podido reproducir el problema que comentas. Si utilizo el siguinete codigo:
Código Delphi [-]
var
  aux:string;
  numero:int64;
begin
  aux:= '87654';
  numero:=strtoint64(aux);
  ShowMessage(IntToStr(numero));
El numero que se muestra es 87654, el numero correcto.

De todas formas, si solo quieres hacer comparaciones con los números, no hace falta que los conviertas. Se pueden comparar directamente dos números en formato de texto, solo tienes que asegurarte de que tienen el mismo número de cifras, añadiendo ceros a la izquierda si es necesario.

Por ejemplo:
Código Delphi [-]
function Comparar(i,j: String): Integer;
begin
  while Length(i) > Length(j) do
    j:= '0' + j;
  while Length(j) > Length(i) do
    i:= '0' + i;
  Result:= StrComp(PChar(i),PChar(j));
end;


var
  S1, S2: String;
begin
  S1:= '1236560';
  S2:= '123556';
  if Comparar(S1,S2) > 0 then
    ShowMessage('S1 es mayor que S2')
  else
    ShowMessage('S2 es mayor o igual que S1');
end;

Última edición por seoane fecha: 12-05-2007 a las 18:13:16.
Responder Con Cita
  #3  
Antiguo 12-05-2007
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Poder: 19
fedelphi Va por buen camino
gracias seoane, lo hare de esa manera, utilizando directamente el string. No habia tenido en cuenta los ceros adelante, asi se me simplifica mucho.
Muchas gracias
Fede
__________________
De lo que hay no falta nada!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ingresar un núm de 10 digitos... coronado Varios 1 12-10-2006 13:49:18
Cuantos digitos tomar Coco_jac SQL 1 11-04-2006 16:09:29
Solo Cuatro Digitos osmar Varios 13 09-02-2006 12:50:57
Cantidad de digitos de un entero kikodelphi OOP 2 06-12-2005 18:51:28
nros a letras pmfras Varios 3 29-09-2005 08:42:50


La franja horaria es GMT +2. Ahora son las 08:16:26.


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
Copyright 1996-2007 Club Delphi