Ver código fonte

+ variant<->currency/tdatetime operators

florian 20 anos atrás
pai
commit
db865d1e51
2 arquivos alterados com 32 adições e 20 exclusões
  1. 20 14
      rtl/inc/variant.inc
  2. 12 6
      rtl/inc/varianth.inc

+ 20 - 14
rtl/inc/variant.inc

@@ -60,8 +60,8 @@ procedure variant_addref(var v : tvardata);[Public,Alias:'FPC_VARIANT_ADDREF'];
     if assigned(VarAddRefProc) then
       VarAddRefProc(v);
   end;
-  
-{ using pointers as argument here makes life for the compiler easier }  
+
+{ using pointers as argument here makes life for the compiler easier }
 procedure fpc_variant_copy(d,s : pointer);compilerproc;
   begin
     if assigned(VarCopyProc) then
@@ -91,8 +91,8 @@ procedure fpc_vararray_get(var d : variant;const s : variant;indices : psizeint;
   begin
     d:=variantmanager.vararrayget(s,len,indices);
   end;
-  
-  
+
+
 procedure fpc_vararray_put(var d : variant;const s : variant;indices : psizeint;len : sizeint);compilerproc;
   begin
     variantmanager.vararrayput(d,s,len,indices);
@@ -274,15 +274,17 @@ end;
 
 
 { Misc. }
-{ Fixme!!!
 operator :=(const source : currency) dest : variant;
   begin
+    VariantManager.VarFromCurr(Dest,Source);
   end;
 
+
 operator :=(const source : tdatetime) dest : variant;
   begin
+    VariantManager.VarFromTDateTime(Dest,Source);
   end;
-}
+
 {**********************************************************************
                        from Variant assignments
  **********************************************************************}
@@ -447,20 +449,21 @@ begin
 end;
 {$endif SUPPORT_COMP}
 
+
 { Misc. }
 operator :=(const source : variant) dest : currency;
-
 begin
   dest:=variantmanager.vartocurr(source);
 end;
 
-(* FIXME !!!
-operator :=(const source : variant) dest : tdatetime;
 
+{$ifdef HASOVERLOADASSIGNBYUNIQUERESULT}
+operator :=(const source : variant) dest : tdatetime;
 begin
-  dest:=variantmanager.currtovar(source);
+  dest:=variantmanager.vartotdatetime(source);
 end;
-*)
+{$endif HASOVERLOADASSIGNBYUNIQUERESULT}
+
 {**********************************************************************
                                Operators
  **********************************************************************}
@@ -524,7 +527,7 @@ operator /(const op1,op2 : variant) dest : variant;
      dest:=op1;
      variantmanager.varop(dest,op2,opdivide);
   end;
-  
+
 operator **(const op1,op2 : variant) dest : variant;
   begin
      dest:=op1;
@@ -578,7 +581,7 @@ procedure VarArrayRedim(var A: Variant; HighBound: SizeInt);
   begin
     variantmanager.vararrayredim(a,highbound);
   end;
-  
+
 
 {**********************************************************************
                       Variant manager functions
@@ -624,7 +627,10 @@ procedure initvariantmanager;
 
 {
   $Log$
-  Revision 1.29  2005-04-10 20:24:31  florian
+  Revision 1.30  2005-04-28 19:34:19  florian
+    + variant<->currency/tdatetime operators
+
+  Revision 1.29  2005/04/10 20:24:31  florian
     + basic operators (int, real and string) for variants implemented
 
   Revision 1.28  2005/04/10 09:22:38  florian

+ 12 - 6
rtl/inc/varianth.inc

@@ -35,7 +35,7 @@ const
    varword = 18;
    varlongword = 19;
    varint64 = 20;
-   varqword = 21;   
+   varqword = 21;
 
    varstrarg = $48;
    varstring = $100;
@@ -131,6 +131,7 @@ type
       vartoword64 : function(const v : variant) : qword;
       vartobool : function(const v : variant) : boolean;
       vartoreal : function(const v : variant) : extended;
+      vartotdatetime : function(const v : variant) : tdatetime;
       vartocurr : function(const v : variant) : currency;
       vartopstr : procedure(var s ;const v : variant);
       vartolstr : procedure(var s : ansistring;const v : variant);
@@ -145,6 +146,8 @@ type
       varfromint64 : procedure(var dest : variant;const source : int64);
       varfromword64 : procedure(var dest : variant;const source : qword);
       varfromreal : procedure(var dest : variant;const source : extended);
+      varfromtdatetime : procedure(var dest : Variant;const source : TDateTime);
+      varfromcurr : procedure(var dest : Variant;const source : Currency);
       varfrompstr: procedure(var dest : variant; const source : ShortString);
       varfromlstr: procedure(var dest : variant; const source : ansistring);
       varfromwstr: procedure(var dest : variant; const source : WideString);
@@ -241,10 +244,9 @@ operator :=(const source : comp) dest : variant;
 {$endif SUPPORT_COMP}
 
 { Misc. }
-{ Fixme!!!!
 operator :=(const source : currency) dest : variant;
 operator :=(const source : tdatetime) dest : variant;
-}
+
 {**********************************************************************
                        from Variant assignments
  **********************************************************************}
@@ -289,9 +291,10 @@ operator :=(const source : variant) dest : comp;
 
 { Misc. }
 operator :=(const source : variant) dest : currency;
-{ Fixme!!!!
+{$ifdef HASOVERLOADASSIGNBYUNIQUERESULT}
 operator :=(const source : variant) dest : tdatetime;
-}
+{$endif HASOVERLOADASSIGNBYUNIQUERESULT}
+
 {**********************************************************************
                          Operators
  **********************************************************************}
@@ -321,7 +324,10 @@ procedure VarArrayRedim(var A: Variant; HighBound: SizeInt);
 
 {
   $Log$
-  Revision 1.23  2005-04-10 20:24:31  florian
+  Revision 1.24  2005-04-28 19:34:19  florian
+    + variant<->currency/tdatetime operators
+
+  Revision 1.23  2005/04/10 20:24:31  florian
     + basic operators (int, real and string) for variants implemented
 
   Revision 1.22  2005/04/10 09:22:38  florian