Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #10  
Antiguo 31-03-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
¿Y no será que el problema está en la traducción de un TBCD al Variant? De la ayuda leo que existen estas funciones sobrecargadas:

Código Delphi [-]
procedure VarFMTBcdCreate(var aDest: Variant; const ABcd: TBcd); overload;
function VarFMTBcdCreate: Variant; overload;
function VarFMTBcdCreate(const ABcd: TBcd): Variant; overload;
function VarFMTBcdCreate(const AValue: string, Precision, Scale: SmallInt): Variant; overload;
function VarFMTBcdCreate(const AValue: Double; Precision: SmallInt = 18; Scale: SmallInt = 4): Variant; overload;

Pero en tu código tu haces simplemente esto:

Código Delphi [-]
V := VarFMTBcdCreate (149.88)

Por lo que utilizas esta:
Código Delphi [-]
function VarFMTBcdCreate(const AValue: Double; Precision: SmallInt = 18; Scale: SmallInt = 4): Variant;

Si tu idea es tener una representación TBCD desde un Double, ¿porqué no directamente emplear DoubleToBCD?. Nos evitamos trabajar con el Variant en formato TBCD:

Código Delphi [-]
function DoubleToBcd( const aValue: Double): TBcd; overload;
procedure DoubleToBcd( const aValue: Double, var bcd: TBcd; overload;

En el TFMTBCDField cuando uno trabaja con el AsCurrency internamente hace las conversiones desde el Double. Por ejemplo, al leer la propiedad se invoca a GetAsCurrency:

Código Delphi [-]
function TFMTBCDField.GetAsCurrency: Currency;
begin
  Result := GetAsFloat;
end;

Lo que se vé que utiliza al tipo Double para hacer el trabajo:

Código Delphi [-]
function TFMTBCDField.GetAsFloat: Double;
var
  bcd: TBcd;
begin
  if not GetValue(bcd) then
    Result := 0
  else
    Result := BcdToDouble(bcd);  
end;

Por tanto.

Hasta el momento yo no he utilizado Variant. Me manejo con las propiedades AsTipoConcreto, como en este caso el que tu dices, AsCurrency. De todas formas a tener en cuenta esto.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
 



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
Premium, A mi me lo quitan tambien? poliburro La Taberna 16 06-01-2009 00:00:52
Currency to float david duarte Varios 2 14-11-2006 16:53:22
Error dando formato a un TFMTBCDField HiroProtagonist Conexión con bases de datos 7 18-05-2006 00:46:04
Error de Currency Epunamun OOP 2 05-12-2005 23:41:25
Como cambiar TBcdField a TFMTBcdField Ricardo Alfredo Varios 0 31-12-2004 16:07:55


La franja horaria es GMT +2. Ahora son las 07:06:09.


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