标题:为什么老说IF...THEN出错??
只看楼主
lfkm
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-4-19
结帖率:100%
 问题点数:0 回复次数:2 
为什么老说IF...THEN出错??
procedure TForm1.Button1Click(Sender: TObject);
var
   i:string;u,money:string;
begin
   i:=edit1.text ;
   u:=edit2.text;
   if i<1000 then----红条老在这里出现.错误提示是说 Incompatible type:'string'and'integer'
      money=i-u;
      else if i>1000 and i<=2000 then
      money=(i-u)*0.9 ;
      else
end;
end.
请高手解释下是什么意思....谢谢...
还有这段代码没有出错的地方了吧?
是不是edit控件类型不符?要怎么写才行?

[[it] 本帖最后由 lfkm 于 2008-4-21 17:34 编辑 [/it]]
搜索更多相关主题的帖子: THEN string Sender procedure var 
2008-04-21 17:00
hackergirl
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-3-18
得分:0 
你的Pascal语言好差哦.比我还差,看你写的代码,你以前是学C的吧?
原因是因为类型不同,就应该把 i 这个变量转为整开再判断.
像下面这样应该就不会错了.


procedure TForm1.Button1Click(Sender: TObject);
var
   i,u:Integer;        //把i和u声明为整型;
   money:Single;       //把money声明为实型;
begin
   i:=StrToInt(edit1.text) ;   //把Edit1.Text转为整型再赋给变量i; 注意,Edit里你要限制输入的内容,否则容易出错.
   u:=StrToInt(edit2.text);    //把Edit1.Text转为整型再赋给变量u;
   if i<1000 then              //你的问题就出在这里.字符型怎么能跟整开比效呢?
      money:=i-u                              //注意,这里不能加分号;
   else if (i>1000) and (i<=2000) then        //这里要加括号,注意他们的优先级.
      money:=(i-u) * 0.9 ;                    //由于这里是实数相乘,所以money要声明为实型.
end;
2008-04-22 15:34
linanguyu
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2008-4-21
得分:0 
呵呵,我以前也是学C的,Pascal语言没学过,也经常犯这种错
2008-04-23 15:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-210258-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019252 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved