Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi XE7-字段FTBcd-编号超出范围_Delphi_Delphi Xe7_Tbcd - Fatal编程技术网

Delphi XE7-字段FTBcd-编号超出范围

Delphi XE7-字段FTBcd-编号超出范围,delphi,delphi-xe7,tbcd,Delphi,Delphi Xe7,Tbcd,我正在将一个应用程序从Delphi 2010迁移到Delphi XE7,它使用一些旧的Paradox表和BDE。我有一些字段是BCD(#)大小为4的,在Delphi 2010中作为.asfloat管理 范例 TABELLA1.Fieldbyname('FIELDBCD').AsFloat: = TABELLA2.Fieldbyname('Number').AsFloat; 没有任何问题 在转换后的程序中,任何类型的分配都会发送错误信号EDBENGINE错误号超出范围。。。。即使我只是从DBG

我正在将一个应用程序从Delphi 2010迁移到Delphi XE7,它使用一些旧的Paradox表和BDE。我有一些字段是BCD(#)大小为4的,在Delphi 2010中作为.asfloat管理

范例

TABELLA1.Fieldbyname('FIELDBCD').AsFloat: = TABELLA2.Fieldbyname('Number').AsFloat; 
没有任何问题

在转换后的程序中,任何类型的分配都会发送错误信号EDBENGINE错误号超出范围。。。。即使我只是从DBGrid中对值进行数字运算,也会出现这种情况

您知道Delphi XE7中的BCD字段管理中存在错误吗?或者他们必须以不同的方式进行管理吗

谢谢
米尔科

这个问题由来已久,但这些天我仍然面临着这个问题。我建议确认三个属性

精度-(它需要是有意义的部分和分馏部分)。例如,在数据库中,字段是数字(8,4),因此这里的正确值是12

大小-(只是数字中的要素部分)。在我们的示例中,正确的值是4


DisplayWidth-这里我们使用精度+1的值作为逗号。

使用
TField.AsBCD
来代替。我说“即使我只是从DBGrid中对值进行数字运算,这也是正确的”。该问题与作业类型无关。任何类型的赋值都会出错。我有两台PC和delphi xe7,两台都是同一个问题。我使用过任何类型的作业(也是.asbcd),但没有结果。你说得对。这是因为基础值的类型,这就是为什么您应该使用
TField.AsBCD
而不是我所说的。请发布一个MCVE,其中包含足够的信息,以便我们重现问题,包括Paradox表定义和实际的可编译代码。连接它们。将TTable连接到具有BDE别名的Paradox表。Paradox表有一个BCD字段就足够了。通过DBGrid修改表的BCD字段,在Post上错误为“EDBEngineError Number超出范围”