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 04-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Conversion de números

Necesito Convertir de un HEX formato IEEE de 4 bytes a Float en delphi. Probe con algunas libs que convierten a double, pero el código esta armado para HEX de 8 bytes o 16 nibbles, y los resultados fueron incorrectos por completo.

Si alguien conoce alguna librería para realizar esta función se los agradezco porque estoy más perdido que perro en cancha de bochas.

Saludos
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #2  
Antiguo 04-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola

Tal vez te puede servir esto

http://www.merlyn.demon.co.uk/programs/hexfloat.pas

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 04-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Hola

Tal vez te puede servir esto

http://www.merlyn.demon.co.uk/programs/hexfloat.pas

Salud OS
Gracias amigo, con esa librería estoy luchando sin éxito hasta ahora. Quizas sea la hora pero nada...

Probe otra librería con este código:

Código Delphi [-]
  FUNCTION HexToDouble(CONST hex:  STRING):  DOUBLE;
    VAR
      d      :  DOUBLE;
      Overlay:  ARRAY[1..2] OF LongInt ABSOLUTE d;
  BEGIN
    IF   LENGTH(hex) <> 16
    THEN raise EIEEEMath.Create('Invalid hex string for HexToDouble');

    Overlay[1] := StrToInt('$' + COPY(hex, 9, 8));
    Overlay[2] := StrToInt('$' + Copy(hex, 1, 8));

    RESULT := d
  END {HexToDouble};

Es para un string de entrada de 16 chars, 8 bytes, no encuentro la manera de pasarlo a 8 chars, 4 bytes de entrada. Mañana me pondré a leer.

Gracias nuevamente.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #4  
Antiguo 06-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Hola

Tal vez te puede servir esto

http://www.merlyn.demon.co.uk/programs/hexfloat.pas

Salud OS
Por cierto, se resolvió demasiado fácil (amo pascal). Por si a alguien le sirve:

Código Delphi [-]
function HexToSingle(const hex:  string):  Single;
var
  d      :  Single;
  Overlay:  Longword absolute d;
begin
  if (Length(hex)<>8) then
    raise Exception.Create('Funcion hextosingle largo de string de entrada incorrecto');
  Overlay := StrToInt('$' + Copy(hex, 1, 8));
  result := d
end;

function Singletohex(const d: single): string;
var
  Overlay:  longword absolute d;
begin
  result := IntToHex(Overlay, 8)
end;
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #5  
Antiguo 07-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Red face Error el guardar datos

Hola, veo que tu hiciste que lograste la conversion, y quiero comentarte mi problema, fijate que quiero guardar mis datos en la bd, pero me sale un error que dice
Código Delphi [-]
invalid variant type conversion

aunque no entiendo el porque, ya que este mismo procedimiento lo utilizo para guardar otros datos, mi codigo es el siguiente:
Código Delphi [-]
var
i:string;
begin
if form11.table1.locate('preg_clave',edclave.text,[])then
             begin
              edclave.clear;
              showmessage('La clave ya existe')
             end
              else
                begin
                    i:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
                    i:=copy(cmbSeccion.text,0,pos('-',cmbSeccion.text)-1);
                    form11.table1.insert;
                    form11.table1.fieldvalues['preg_evaluacion']:=i;
                    form11.table1.fieldvalues['preg_secc']:=i;
                    form11.table1.fieldvalues['preg_clave']:=EdClave.text;
                    form11.table1.fieldvalues['preg_descripcion']:=EdPregunta.text;
                    form11.table1.post;
                    cmbEvaluacion.clear;
                    cmbSeccion.clear;
                    edClave.clear;
                    edPregunta.clear;
                    showmessage('Los datos se guardaron con exito!');
                 end;
Utilizo un TTable, TDataBase, y un TQuery. En mi formulario tengo 2 combobox y 2 edit, y un boton para guardar.Saludos
Responder Con Cita
  #6  
Antiguo 07-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por Elite237 Ver Mensaje
Hola, veo que tu hiciste que lograste la conversion, y quiero comentarte mi problema,
Amigo, tu problema no tiene nada que ver con el mio. Para la proxima abre un nuevo hilo para mantener la coherencia del foro.

Cita:
Empezado por Elite237 Ver Mensaje
Utilizo un TTable, TDataBase, y un TQuery. En mi formulario tengo 2 combobox y 2 edit, y un boton para guardar.Saludos
Primera regla del buen diseñador delphi : evita fieldvalues como a la peste. usa AsLoQueSea en su lugar.

Saludos
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #7  
Antiguo 07-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Thumbs up

Disculpame, no fue mi intención revolver este hilo, solo que a veces posteo, y no me doy cuenta de que ya hay un hilo abierto y pense que mi problema entraria en este hilo, pero una vez mas disculpame y gracias por hacerme ver mi error. Saludos
Responder Con Cita
  #8  
Antiguo 07-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por Elite237 Ver Mensaje
Disculpame, no fue mi intención revolver este hilo, solo que a veces posteo, y no me doy cuenta de que ya hay un hilo abierto y pense que mi problema entraria en este hilo, pero una vez mas disculpame y gracias por hacerme ver mi error. Saludos
No hay problema, a todos nos pasa.

Espero te sirva el concejo con los fields. Saludos
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
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
conversion de numeros romanos a letras shishio_al Varios 7 28-09-2012 18:07:45
Conversion .DXF .SHP JCarlosas Gráficos 5 18-05-2006 02:54:05
Conversion de BMP a JPG sierraja Gráficos 13 16-03-2005 15:55:46
Conversion senpiterno Varios 1 25-06-2004 15:43:58
Conversión botones67 Varios 1 11-11-2003 17:37:11


La franja horaria es GMT +2. Ahora son las 13:44:29.


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