Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Varios
Register FAQ Members List Calendar Guía de estilo Today's Posts

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 04/10/2008
donald shimoda's Avatar
donald shimoda donald shimoda is offline
Miembro
 
Join Date: Jul 2008
Location: Argentino en Santa Cruz de la Sierra
Posts: 1,083
Poder: 20
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
Reply With Quote
  #2  
Old 04/10/2008
[egostar] egostar is offline
Registrado
 
Join Date: Feb 2006
Posts: 6,572
Poder: 27
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
Reply With Quote
  #3  
Old 04/10/2008
donald shimoda's Avatar
donald shimoda donald shimoda is offline
Miembro
 
Join Date: Jul 2008
Location: Argentino en Santa Cruz de la Sierra
Posts: 1,083
Poder: 20
donald shimoda Va por buen camino
Quote:
Originally Posted by egostar View Post
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
Reply With Quote
  #4  
Old 06/10/2008
donald shimoda's Avatar
donald shimoda donald shimoda is offline
Miembro
 
Join Date: Jul 2008
Location: Argentino en Santa Cruz de la Sierra
Posts: 1,083
Poder: 20
donald shimoda Va por buen camino
Quote:
Originally Posted by egostar View Post
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
Reply With Quote
  #5  
Old 07/10/2008
Elite237 Elite237 is offline
Miembro
 
Join Date: Jul 2007
Posts: 162
Poder: 20
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
Reply With Quote
  #6  
Old 07/10/2008
donald shimoda's Avatar
donald shimoda donald shimoda is offline
Miembro
 
Join Date: Jul 2008
Location: Argentino en Santa Cruz de la Sierra
Posts: 1,083
Poder: 20
donald shimoda Va por buen camino
Quote:
Originally Posted by Elite237 View Post
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.

Quote:
Originally Posted by Elite237 View Post
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
Reply With Quote
  #7  
Old 07/10/2008
Elite237 Elite237 is offline
Miembro
 
Join Date: Jul 2007
Posts: 162
Poder: 20
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
Reply With Quote
  #8  
Old 07/10/2008
donald shimoda's Avatar
donald shimoda donald shimoda is offline
Miembro
 
Join Date: Jul 2008
Location: Argentino en Santa Cruz de la Sierra
Posts: 1,083
Poder: 20
donald shimoda Va por buen camino
Quote:
Originally Posted by Elite237 View Post
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
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
conversion de numeros romanos a letras shishio_al Varios 7 28/09/2012 18:07
Conversion .DXF .SHP JCarlosas Gráficos 5 18/05/2006 02:54
Conversion de BMP a JPG sierraja Gráficos 13 16/03/2005 15:55
Conversion senpiterno Varios 1 25/06/2004 15:43
Conversión botones67 Varios 1 11/11/2003 17:37


All times are GMT +2. The time now is 12:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi