[fpc-pascal] Extended, Currency and TDateTime memory layout
    Felipe Monteiro de Carvalho 
    felipemonteiro.carvalho at gmail.com
       
    Sat Aug  7 20:56:41 CEST 2010
    
    
  
For single and double there is a nice converter which shows the binary layout:
http://babbage.cs.qc.edu/IEEE-754/Decimal.html
Unfortunately there seams to be much less resources about extended...
On Fri, Aug 6, 2010 at 4:52 PM, Michael Van Canneyt
<michael at freepascal.org> wrote:
> Strange, because tkCurrency exists ?
>
> A currency is a Int64, which is the currency amount multiplied by 10000.
Well, apparently Delphi 6 RTTI thinks that it is a float. Check this code:
471	          else if ElmTypeInfo.Kind in [tkFloat] then begin
472	            case TypeData.FloatType of
473	              ftSingle: Stream.Write(DynArray^, ArrayLength *
SizeOf(Single));
474	              ftDouble: Stream.Write(DynArray^, ArrayLength *
SizeOf(Double));
475	              ftComp: Stream.Write(DynArray^, ArrayLength * SizeOf(Comp));
476	              ftCurr: Stream.Write(DynArray^, ArrayLength *
SizeOf(Currency));
477	              ftExtended: Stream.Write(DynArray^, ArrayLength *
SizeOF(Extended));
478	            end;
But this code is in another part of the program.
For that particular part it simply converts any float type to
extended, which was a pretty nasty thing to do.
-- 
Felipe Monteiro de Carvalho
    
    
More information about the fpc-pascal
mailing list