注册 登录
编程论坛 Delphi论坛

delphi中如何运用case语句?

qyzzjian 发布于 2005-12-27 17:07, 5282 次点击
如果我要实现这样的语句,当输在Editpay.text里输入数据,然后在计算框里计算结果,放到EditTax.text里,如下图,用IF语句可以实现,但是用case语句又样写呢,我写了一段,不过老是说Constant expression expected 。是不是这一小段里写错了什么呢?
procedure TForm1.BtncaculateClick(Sender: TObject);
var
pay,tax:single; // pay是个人收入,tax是税率;
begin
pay:=StrtoFloat(Editply.text);
case pay>0 of
pay<=500 : tax :=pay*0.05; //如果小于500;
pay>500 and pay<=2000 : tax :=pay*0.1; //如果大于500而小于2000;
pay>2000 and ply<=5000 : tax :=pay*0.15; //如果大于2000而小于5000;
end;
EditTax.text:=FloattoStr(tax);
end;


还望各位指点!先谢谢!
只有本站会员才能查看附件,请 登录

16 回复
#2
qyzzjian2005-12-31 16:31

没有人回答,自己顶吧

#3
zhangzujin2005-12-31 20:01

可以调试一下,看运行结果对不对啊.

不过如何没错的话,应该case 的只能是整型和字符型啊.


对了,我很想你告诉我,这图片只怎么搞上去的啊?

#4
zhangzujin2006-01-06 20:19
这图片只怎么搞上去的啊?



快阿,怎么添加阿?
#5
baoxuelan2006-01-19 02:59
#6
baoxuelan2006-01-19 02:59
#7
caffe_zahn2006-01-20 02:14

我觉得是不是在数字上写错了,“pay”是浮点型,那“pay>0.0”吧!
后面都也一样!
个人意见!你可以试试。

#8
斯文的√流氓2006-01-23 04:00
你用不着搞那么大吧~~
#9
qyzzjian2006-02-02 22:55
回zhangzujin,不好意思,近来比较少上论坛,我的那个图只是用键盘PRINT那个按键复制最在PHOTOSHOP里简单加工一下传上来的;
谢谢各位的指教!
#10
Huacn2006-02-08 21:51

晕,Case语句不是这么写的

#11
luobutou2006-02-08 22:56

大家有知道的
就告诉一下哈
让大家好学习啊

#12
Huacn2006-02-09 11:06

这里不能用CASE语句,CASE语句只能是有序类型的变量
浮点型不是有序类型

#13
aizaixiiii2006-02-09 16:29
学习。。。。
#14
超级新手2006-02-10 10:22
case pay of
0..500 : tax :=pay*0.05; //如果小于500;
501..2000 : tax :=pay*0.1; //如果大于500而小于2000;
2001..5000 : tax :=pay*0.15; //如果大于2000而小于5000;
//case需要有序型char integer可以
#15
cnbkhm2006-02-10 10:54
14楼说的清楚明白,支持.
#16
qyzzjian2006-03-17 15:29

已经可以了,原来CASE下面的条件值是只能是有序类型,谢谢各位!

[此贴子已经被作者于2006-3-17 15:30:54编辑过]

#17
baoxuelan2006-03-18 20:31

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Label2: TLabel;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
//定义三个单精度浮点数,分别表示应纳税总额,区间应纳税总额,累加纳税额
var
sum, para, tax: single;
begin
//取得应纳税总额,并将累计纳税额变量置0
sum:=strtofloat(Edit1.Text); //这个函数进行从字符串到浮点型的转化
sum:=sum-800;
tax:=0;
//如果满足条件才执行相应代码
if sum>2000
then begin
para:=sum-2000; //计算位于2000~5000元之间的部分
sum:=sum-para; //从总额中减去一纳税额
tax:=tax+para*0.15; //累加求取纳税总额
end;
if sum>500
then begin
para:=sum-500;
sum:=sum-para;
tax:=tax+para*0.1;
end;
if sum>0
then tax:=tax+sum*0.05;
Edit2.Text:=floattostr(tax); //这个函数进行从浮点数到字符串的转化
end;

end.

1