quote:以下是引用尘土飞扬在2010-07-12 15:44:50的发言:
如果是DB2.DBD20呢,其实我程序里面这个是个REAL型的,好像也不能“DB2.DBD10 :=DB2.DBD10 + 1"”啊!那如果是REAL型的,该如何写呢?
不同的数据类型(格式),需要转换成同一种类型进行运算。
WORD、DWORD格式是不可以直接进行加减乘除等运算的,需要用INT、REAL等进行运算。
分析下你需要的运算: DB2.DBD10 :=DB2.DBD10 + 1
DB2.DBD10 (DWORD格式),数据是REAL类型,1是INT类型,所以你需要先将DB2.DBD10 和 1 转换成同一种数据类型,然后相加,再将相加的结果转换为最终结果的存储格式。
提供一种方案,都转换为REAL类型,然后相加:因为DB2.DBD10是DWORD格式,需要先转换为REAL格式,与转换后的1相加结果为REAL格式,然后将REAL转换为DWORD格式(最终结果的存储格式)。
DB2.DBD10:=REAL_TO_DWORD(DWORD_TO_REAL(DB2.DBD10)+INT_TO_REAL(1));
说得有些啰嗦了,总之,你按照相同数据类型才可以进行加减乘除运算的原则,统一需要运算的数据的类型,然后要注意运算结果的类型与最终结果的类型要一致。(SCL帮助手册中有转换函数的种类,你可以参考一下。另外你上面的运算还有其它方案可用。注意运算数据的范围。)