Формат данных для TFMTBCDField
- это запись TBcd
с устройства FMTBcd . Вы можете получить это необработанное значение, прочитав Value
или AsBCD
свойства поля.
В зависимости от того, для чего вам нужно значение, TBcd
может быть достаточным. То есть вам может не потребоваться преобразовать его в Int64
. FMTBcd предоставляет функции для сложения, вычитания, умножения и деления TBcd
значений.
Устройство не обеспечивает преобразование в Int64
. Есть преобразования в Variant
, string
, Currency
, Double
и Integer
. Если мы собирались написать преобразование Int64
, преобразование Integer
, вероятно, является хорошим началом, поэтому давайте посмотрим, как оно реализовано:
function BcdToInteger(const Bcd: TBcd; Truncate: Boolean = False): Integer;
var
ABcd: TBcd;
begin
if Truncate and (BcdScale(Bcd) > 0) then
NormalizeBcd(Bcd, ABcd, Bcd.Precision, 0)
else
ABcd := Bcd;
Result := StrToInt(BcdToStr(ABcd));
end;
Таким образом, сам VCL не предоставляет более прямого способа преобразования TBcd
в Integer
, чем через string
. Поэтому, похоже, ваша идея вызвать StrToInt64
в строковой версии поля - это нормально.