主题:请大家看看这个if语句的问题,错在哪里?
qqjb
[专家分:0] 发布于 2008-01-17 09:42:00
noway :integer,edtno.text :TEdit; //这个只是部分代码,所以在这说明下这两个的类型
noway := strtoint(edtno.text)+1;
if noway < 10 then
edtno.text := '0000'+inttostr(noway)
else
if noway >=10 and noway <100 then //编译出错 提示 Incompatible types
edtno.text := '000'+inttostr(noway)
else
if noway >=100 and noway <1000 then //编译出错 提示 Incompatible types
edtno.text := '00'+inttostr(noway)
else
if noway >=1000 and noway <10000 then //编译出错 提示 Incompatible types
edtno.text := '0'+inttostr(noway);
请大家帮我看看,因为刚接触编程,很多都不会,希望大家能帮助我,谢谢先
最后更新于:2008-01-17 14:21:00
回复列表 (共6个回复)
沙发
qqjb [专家分:0] 发布于 2008-01-17 14:19:00
是问题太简单了吗 怎么没人回答啊
板凳
yaojp7519 [专家分:600] 发布于 2008-01-17 15:32:00
if noway < 10 then
edtno.text := '0000'+inttostr(noway)
else
if (noway >=10) and (noway <100) then //编译出错 提示 Incompatible types
edtno.text := '000'+inttostr(noway)
else
if (noway >=100) and (noway <1000) then //编译出错 提示 Incompatible types
edtno.text := '00'+inttostr(noway)
else
if (noway >=1000) and (noway <10000) then //编译出错 提示 Incompatible types
edtno.text := '0'+inttostr(noway);
3 楼
yaojp7519 [专家分:600] 发布于 2008-01-17 15:34:00
但是这个方法太复杂了,给你一个简单方法
noway := strtoint(edtno.text)+1;
edtno.text := FormatCurr('00000'+strtoint(noway));
即可实现。
4 楼
tbgdwj [专家分:0] 发布于 2008-03-13 15:23:00
if noway < 10 then
Edit1.text := '0000'+inttostr(noway)
else if (noway >=10) and (noway <100) then //编译出错 提示 Incompatible types
Edit1.text := '000'+inttostr(noway)
else if (noway >=100) and (noway <1000) then //编译出错 提示 Incompatible types
Edit1.text := '00'+inttostr(noway)
else if (noway >=1000) and (noway <10000) then //编译出错 提示 Incompatible types
Edit1.text := '0'+inttostr(noway);[em12]
5 楼
SupermanTm [专家分:130] 发布于 2008-03-31 05:22:00
4楼的是对的,注意逻辑表达式中 >、<、=、>=、<= 之类的算符的优先级低于 and、or、xor 的优先级,也就是说,楼主的 if noway >=10 and noway <100 等效于 if (noway >= (10 and noway)) < 100 前边的表达式计算结果是 Boolean 类型,而后面的100是Integer,当然类型不兼容。
6 楼
calindara [专家分:0] 发布于 2008-04-01 10:56:00
补充
noway :integer,edtno.text :TEdit;
中的 逗号 改为 分号
我来回复