case语句出错求解决办法(20分)

  • 主题发起人 主题发起人 大名顶顶
  • 开始时间 开始时间

大名顶顶

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟新手,下面这段代码总是报错不知为何?请各位大侠指教

-----------------------------------------------------
var
s:string;
begin
case s of //这里报错,好象是说类型不匹配,integer and string
'name':
begin
....
end;
'address':
begin
.....
end;
'telphone':
begin
.........
end;
end;
 
delphi 的case 的判断条件似乎只能用Integer类型.
 
只能是顺序类型,,好象'A'..'Z',,1..3,有顺序的才行,而且值(我想应该是ASCII值吧)不能大于255,,
delphhi的CASE不象别的语言那样好用,,,
 
只能是Asscii值或者integer 其他类型都不可以
 
Case 语句的条件只能是数值型,不能是字符串,当然也可以是字符(实际使用ASCII值),
还有枚举类型。
 
在delphi的帮助中有这样一句话:string types are invalid,
用integer的吧。
 
只要是有序的就行,逻辑也是有序的。

char boolean integer 集合等等





 
case语句的条件只能是可排序类型的变量!
你在此可以使用枚举类型来完成工作。
type info=(name,addr,tele);
var myinfo:info;
case myinfo of
name :begin ...end;
addr : begin ...end;
tele : begin ...end;
end;
It's ok!
 
case不适用string型,
但有办法用case,来判断string.
用数组例:
var a:array[0..3] of string=('abc','ab','a','abcd');
b:integer;
begin
case b of
0:a//要做的事情
1://
end;
end;


 
Delphi中 Case只能用来判断integer
 
case后的表达式取值只能是有序的,如integer,char,boolean,枚举,有界等都可以
 
s不是一个有序的值
 
这样改吧

var
s:string;
begin
case s[1] of
'n':
begin
....
end;
'a':
begin
.....
end;
't':
begin
.........
end;
end;
 
建义用kevincsg兄的方法,比较好。
 
阿.....大家都没有发现吗???
他的代码写错了!!!

他多写了一个分号
应该为:
case
......

'telphone':
begin
.........
end //此处没有分号!!!!!
end;//case
 
to colacoca:
为什么没有分号?你实验了没有?
实际情况是:
除了最后一个分支中的Begin...en后面可加可不加以外,在每个case分支中的Begin...end的后面都要加分号。
 
stutsyt说的对,
pascal的文法中定义了:
CompoundStatement ::= begin {Statement;} end
Statement 中包含空语句
也就是说通常end前是不加 ";"的
加了也就是加了一条空语句

不过对于string还是可以用case的
procedure caseastring(s: string);
const a:array[1..4] of string=('string1', 'string2', 'string3', 'string4')
function getindex(s: string): integer;
var i: integer;
begin
result:=0;//default is none
for i:=1 to 4 do
if s=a then result:=i;
end;
begin
case getindex(s) of
0:
//none
1:xxxxxx;
2:xxxxxx;
3:xxxxxx;
4:xxxxxx;
end
end;
 
case语句中的类型应为序数类型,即可数,如整型,字符型,枚举型
 
case 语句中的类型只能为序数类型;
赶快收贴吧。
 

Similar threads

I
回复
0
查看
577
import
I
I
回复
0
查看
601
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部