注册 登录
编程论坛 Delphi论坛

为什么老说IF...THEN出错??

lfkm 发布于 2008-04-21 17:00, 1180 次点击
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]]
2 回复
#2
hackergirl2008-04-22 15:34
你的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;
#3
linanguyu2008-04-23 15:07
呵呵,我以前也是学C的,Pascal语言没学过,也经常犯这种错
1