// uses BDE, Math;
// auf Nachkommastellen runden
function RoundNumber(_Value: Extended;
_Prec: Integer): Extended;
begin
Result := Trunc(Abs(_Value) * Power(10, _Prec) + 0.5) / Power(10, _Prec) * Sign(_Value);
end;
// Feld in Tabelle setzen
procedure SetNumber(_Table: TTable; _Field:
string;
_Number: Extended);
begin
_Table[_Field] := RoundNumber(_Number, GetPrec(_Table, _Field));
end;
// Feld aus Tabelle auslesen
function GetNumber(_Table: TTable;
_Field:
string): Extended;
begin
Result := RoundNumber(_Table[_Field], GetPrec(_Table, _Field));
end;
// da Table.FieldDef.Size und Precision nicht die Nachkommastellen liefert (unoptimiert):
function GetPrec(_Table: TTable; _Field:
string): Integer;
var
FldsArr:
array of FLDDesc;
i: Integer;
begin
Result := 0;
SetLength(FldsArr, _Table.FieldCount + 1);
Check(DbiGetFieldDescs(_Table.handle, @FldsArr[0]));
for i := Low(FldsArr)
to High(FldsArr)
do
if SameText(FldsArr[i].szName, _Field)
then
Result := FldsArr[i].iUnits2;
end;