回 帖 发 新 帖 刷新版面

主题:请大家看看这个if语句的问题,错在哪里?

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);
请大家帮我看看,因为刚接触编程,很多都不会,希望大家能帮助我,谢谢先

回复列表 (共6个回复)

沙发


是问题太简单了吗 怎么没人回答啊

板凳

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 楼

但是这个方法太复杂了,给你一个简单方法
noway := strtoint(edtno.text)+1;
edtno.text := FormatCurr('00000'+strtoint(noway));
即可实现。

4 楼


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 楼

4楼的是对的,注意逻辑表达式中 >、<、=、>=、<= 之类的算符的优先级低于 and、or、xor 的优先级,也就是说,楼主的 if noway >=10 and noway <100 等效于 if (noway >= (10 and noway)) < 100 前边的表达式计算结果是 Boolean 类型,而后面的100是Integer,当然类型不兼容。

6 楼

补充 
noway :integer,edtno.text :TEdit;
中的 逗号 改为 分号

我来回复

您尚未登录,请登录后再回复。点此登录或注册