Ich merke gerade, mein Umbau funktioniert doch nicht auf beliebig lange Zahlen.
Es geh bis hierher:
Das hätte man sich auch denken können.
Delphi-Quellcode:
MaxFMTBcdFractionSize = 64;
{ Max supported by Midas }
MaxFMTBcdDigits = 32;
DefaultFMTBcdScale = 6;
MaxBcdPrecision = 18;
MaxBcdScale = 4;
SizeOfFraction = 32;
SizeOfTBCD = 2 + SizeOfFraction;
type
PBcd = ^TBcd;
TBcd =
record
Precision: Byte;
{ 1..64 }
SignSpecialPlaces: Byte;
{ Sign:1, Special:1, Places:6 }
Fraction:
packed array [0..31]
of Byte;
{ BCD Nibbles, 00..99 per Byte, high Nibble 1st }
Erstmal Fraction -> 32 Bytes und pro Byte 2 Dezimalstellen = maximal 10^64
und dann vorallem die Konstanten