Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   [Aporte] TDecBinHex - Números binarios/decimales/hexa (https://www.clubdelphi.com/foros/showthread.php?t=66744)

BrunoBsso 10-03-2010 07:32:21

[Aporte] TDecBinHex - Números binarios/decimales/hexa
 
Hola foro.
En este momento no vengo a preguntar ni a responder, vengo a aportar.
Hace 2 días tuve la necesidad de manejar números binarios, decimales y hexadecimales casi al mismo tiempo, y se me ocurrió hacer una clase que los pueda manipular tranquilamente y devolverlos como yo quisiese.
Bueno, estuve dos días haciendo dicha clase y me parece que salió bastante bien. Cuando ya la pude usar y verifiqué que cumple mis expectativas pensé por qué no ponerla en el foro que tanto me ayudó. Y he aquí el la clase TDecBinHex para quien la pueda llegar a necesitar.

Al componente hay que crearlo de la forma Identificador:=TDecBinHex.Create(); y en los argumentos pueden poner la cantidad de bits a usar en números fraccionarios; sino, usa 32.
Tiene métodos de conversión entre los 3 sistemas, de números enteros y también fraccionarios.
Tiene métodos de suma, resta, multiplicación y división entre 2 números de cualquier sistema, devolviéndolos en el sistema pedido.
También tiene un método para configurar la cantidad de bits que queramos usar en los números fraccionarios.
Todo eso, bien detallado, adentro al archivo que contiene:
  1. El package para Delphi llamado "PDecBinHex.bpl"
  2. El DCU para Delphi llamado "DecBinHex.dcu"
  3. Un documento Word con instrucciones para instalar y para usar.
Está en la sección Componentes-Funciones de la FTP del club. Acá les dejó el enlace directo al archivo en la FTP y un enlace directo al archivo en MediaFire ambos con el demo incluído.

Espero que a alguien le sirva tanto como me sirvió a mí.
Se aceptan comentarios de todo tipo, ya sean a favor, en contra, críticas, sugerencias, aplausos medallas y besos, o lo que quieran.
Saludos!

EDITADO: componente actualizado y enlaces también.

Neftali [Germán.Estévez] 10-03-2010 10:02:57

Gracias
 
Muchas gracias por el aporte Bruno. :)

Un saludo.

dtomeysoto 10-03-2010 14:18:29

hola bruno, pensé que habías subido también el .pas para ver como lo hiciste.....

afunez2007 10-03-2010 15:35:47

En que version de delphi deberia funcionar?

y si seria interesante ver el archivo .pas

Saludos

Neftali [Germán.Estévez] 10-03-2010 16:42:08

Cita:

Empezado por dtomeysoto (Mensaje 356375)
...pensé que habías subido también el .pas para ver como lo hiciste

Yo también pensé así, ahora acabo de ver que no está. :(
¿Sería mucho problema que lo subieras Bruno?

Más que nada por lo que han comentado. Subir los compilados limita mucho la versión en que lo puedes utilizar; Además, de la evidente, de no poder acceder al código fuente.

AÑADO: Bruno, me he permitido añadir al fichero el sufijo _bin para que quede un poco más claro que no incluye código fuente, espero que no te importe. Corrijo también los links que tienes en tu mensaje para que apunten al fichero correcto.

AÑADO2: Bruno ha subido los fuentes y ya está actualizado el fichero en el FTP.

Un saludo.

BrunoBsso 10-03-2010 17:19:20

¿No subí el fuente?
No no, lo pasé de largo.
Acá subo el proyecto entero, con el fuente, el dproj, los dcu, dpk, y los *.blablabla :D todo (a MediaFire):
Decargar
Ahora sí, tienen todos los datos.
Fijense si les sirve ahora y sepan disculpar el descuido.
Remarco que por favor si alguno lo usa que de una opinión. Me interesa ver errores, mejoras, que tan fácil o difícil es usarlo.
Saludos!

EDIT: hecho en Delphi 2010
EDIT2: tal vez no se pueda compilar en versiones inferiores, no tengo muy en claro eso, pero el que pueda y quiera que lo compile en su versión así lo hacemos lo más portable posible.
EDIT3: (prometo que es el último) cuando haya una cantidad considerable de recompilaciones (la mía en D2010, alguna en 2009, otra en D7, etc) limpiamos los enlaces y actualizamos todo para que quede bien prolijo.

Neftali [Germán.Estévez] 10-03-2010 17:23:34

Cita:

Empezado por BrunoBsso (Mensaje 356402)
¿No subí el fuente?
No no, lo pasé de largo.

No hay problema, estas cosas pasan....
Ya me encargo yo de actualizar el fichewro del FTP y los links de nuevo. ;)

AÑADO: Listo, ya está con los fuentes incluídos.

BrunoBsso 10-03-2010 17:25:40

Cita:

Empezado por Neftali (Mensaje 356405)
Ya me encargo yo de actualizar el fichewro del FTP y los links de nuevo. ;)

Por ahora me parece que sería mejor recompilar todo en varias versiones y cuando hayan unas 3 ó 4 versiones diferentes, limpiar los enlaces del FTP y lo actualizamos todo.
¿Te parece?

BrunoBsso 10-03-2010 17:32:26

Neftali, en el nombre ponele TDecBinHex_D2010_Bruno para que sepan que es hecho en D2010 y no haya confusiones.
Por favor, traten de recompilarlo en sus versiones (si difieren de la mía) y súbanlo al FTP cambiando el nombre de la versión.
Eso sí, intenten no modificarle nada al componente.

Neftali [Germán.Estévez] 10-03-2010 17:36:43

Por ahora he subido la versión que has pasado con la demo incluída.
Funciona bien (por lo que yo he probado en Delphi6 (*) y Delphi2009).

Si quieres ir subiendo versiones sucesivas, ves añadiéndolas (con un sufijo de versión, por ejemplo), y me envías un mensaje privado, con las que quieres que elimine.
Tal y como está el FTP ahora no permite eliminar a los usuarios.

Un saludo.

(*) Compila perfectamente el Delphi 6, salvo esto:

Código Delphi [-]
type
  TDecBinHex = class(TComponent)
  private
    { Private declarations }
    type
      TTipoNumero = (Decimal, Binario, Hexadecimal);
    function Potencia(Base,Exponente:Integer):LongInt;
   ...

Aunque basta con sacarlo fuera de la clase para que funcione sin problemas.

Código Delphi [-]
type
  TTipoNumero = (Decimal, Binario, Hexadecimal);
  TDecBinHex = class(TComponent)
  private
    { Private declarations }
    function Potencia(Base,Exponente:Integer):LongInt;
   ...

BrunoBsso 10-03-2010 17:39:14

Si lo sacás fuera de la clase, al crear el objeto te da la posibilidad de crearlo como TTipoNumero.
Me explico, el sentido era que solo te de la posibilidada de que
Código Delphi [-]
//Cualquier form que lo use
var
  DBH:TDecBinHex;
Pero con el tipo TTipoNumero fuera de la clase te da la posibilidad de
Código Delphi [-]
//Cualquier form que lo use
var
  DBH:TTipoNumero
Es un problema eso :(
Bueno, ahora mismo lo soluciono y te aviso Neftali. Dame 5 minutos.

Neftali [Germán.Estévez] 10-03-2010 17:39:59

Cita:

Empezado por BrunoBsso (Mensaje 356408)
Neftali, en el nombre ponele TDecBinHex_D2010_Bruno para que sepan que es hecho en D2010 y no haya confusiones.

Creo que es mejor, que en lugar de subir muchas versiones, intente que un único .PAS funcione en todas (incluyendo directivas si hace falta).
Por lo que veo con este componente es muy sencillo, basta con modificar la línea que te he comentado para que funcione en D6 y D2009; Si tú lo has probado en D2010, con ese cambio cadi puedes asegurar que funcionará en todas.

Es una opinión.

Neftali [Germán.Estévez] 10-03-2010 17:43:21

Cita:

Empezado por BrunoBsso (Mensaje 356412)
Es un problema eso :(
Bueno, ahora mismo lo soluciono y te aviso Neftali. Dame 5 minutos.

Veo que se nos intercalen los mensajes.

¿Y si utilizas directivas de compilacion para las diferentes versiones?

Código Delphi [-]
type
  {$IFNDEF VER210}
    TTipoNumero = (Decimal, Binario, Hexadecimal);
  {$ENDIF}
  TDecBinHex = class(TComponent)
  private
    { Private declarations }
    {$IFDEF VER210}
     type
      TTipoNumero = (Decimal, Binario, Hexadecimal);
    {$ENDIF}
    function Potencia(Base,Exponente:Integer):LongInt;
    function PotenciaNegativa(Base,Exponente:Integer):Extended;
    function EsTipoPedido(Num:String; Tipo:TTipoNumero):Boolean;
    procedure VerCreado;
    ...

NOTA: He de marchar... Ya seguiremos.

BrunoBsso 10-03-2010 17:52:15

No hace falta directivas para verificar versiones.
Ya lo solucioné y estoy 99% seguro que así va a funcionar bien en Delphi6 hasta Delphi2010.
Enlace a MediaFire.
Cuando puedas Neftali actualizalo en el FTP.

Neftali [Germán.Estévez] 10-03-2010 19:28:33

Ya está actualizado en el FTP.

BrunoBsso 10-03-2010 20:09:33

Listo, el hilo está actualizado.
En el inicio del hilo está el enlace al componente en el FTP del club, el enlace del componente en MediaFire, y cada uno tiene el demo incluído.
Usenlo y opinen.
Saludos!!!!

krispis 11-02-2011 14:25:01

No encuentro el 'PDecBinHex.bpl'
 
No encuentro el PDecBinHex.bpl por ninguna parte del archivo, trato de seguir las instrucciones para instalarlo pero no ha manera.

Muchas gracias por las librerías.

krispis 11-02-2011 14:32:10

Muy buenas las librerias
 
Muy buenas las librerias, solo les falta trabajar con números negativos

Gracias por tu trabajo.


La franja horaria es GMT +2. Ahora son las 17:16:55.

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