DBGird1显示选择的图书
DBGird1连DataSource1连ADOQuery1
ADOQuery1的SQL
select * from 图书DBEdit1用来显示选择图书的总价格
DBEdit1连DataSource2连ADOQuery2
ADOQuery2的SQL
select sum(价格) from 图书图书的价格为smallint类型Button1用来添加添加图书到图书列表
我想当选择图书的总价格超过30的时候提示
就在Button1里加了一段
........
if DBEdit1.Text>'30' then
........
Application.MessageBox('所选图书总价格超过30!','注意',MB_OK);
........
第一次添加的时候
图书价格为2的或者为16的都能添加
价格为4的或者为8的都说所选图书总价格超过30!
居然按照最高位进行判断......继续添加
比如说先填了2或16,之后填2,4,8都行
直到总数超过30会提示所选图书总价格超过30!
这个是正常的但为什么第一次添加的时候是从最高位判断啊?
有什么办法修正么?
DBGird1连DataSource1连ADOQuery1
ADOQuery1的SQL
select * from 图书DBEdit1用来显示选择图书的总价格
DBEdit1连DataSource2连ADOQuery2
ADOQuery2的SQL
select sum(价格) from 图书图书的价格为smallint类型Button1用来添加添加图书到图书列表
我想当选择图书的总价格超过30的时候提示
就在Button1里加了一段
........
if DBEdit1.Text>'30' then
........
Application.MessageBox('所选图书总价格超过30!','注意',MB_OK);
........
第一次添加的时候
图书价格为2的或者为16的都能添加
价格为4的或者为8的都说所选图书总价格超过30!
居然按照最高位进行判断......继续添加
比如说先填了2或16,之后填2,4,8都行
直到总数超过30会提示所选图书总价格超过30!
这个是正常的但为什么第一次添加的时候是从最高位判断啊?
有什么办法修正么?
if DBEdit1.Text>30 then
么?它说
[Error] Main.pas(451): Incompatible types: 'String' and 'Integer'
if strtoint(dbedit1.text)>30 then
begin
do something;
end;
var
dTemp : double;
begin
dTemp := strtofloat(edit1.text);
//edit1.text为'30'
if dTemp = 30 then
showmessage('等于');
else
showmessage('不等于');
end;
按正常判断,应该执行if段的程序,但实际运行时执行得却是else段的内容。后来我用watch看了一下,发现在strtofloat的时候,dtemp得值后面有.000000000002。后来我把dTemp改称cardinal类型才执行if段内容。问题解决了,但是没搞明白为什么?难道是double精度的问题?