请问关于一个 Case 语句的用法(10分)

  • 主题发起人 主题发起人 netabloid
  • 开始时间 开始时间
N

netabloid

Unregistered / Unconfirmed
GUEST, unregistred user!
实在不好意思,我没学过 pascal ,所以对这些语法不太懂,
是不是 case 后面的必是一个完整的表达式?
要是完整的表达式那下面的值岂不是只能有两个值(一个真,一个假)?

sLs:='0123456789';
n:=10;
For i:=0 to n do
begin
Case Copy(sLs,i,1) of
'0': showmessage('00');
'1': showmessage('11');
'2': showmessage('22');
'3': showmessage('33');
else showmessage('无');
end;
end;

多谢各位了!
 
我不太清楚你说的是什么意思,不过:
sLs:='0123456789';
n:=10;
For i:=0 to n do
begin
Case Copy(sLs,i,1) of
'0': showmessage('00'); //是说当 Copy(sLs,i,1)='0' 时执行
'1': showmessage('11'); //同理
'2': showmessage('22');
'3': showmessage('33');
else showmessage('无');
end;
end;
 
delphi里有个例子如下:
case I of

1..5: Caption := 'Low';
6..9: Caption := 'High';
0, 10..99: Caption := 'Out of range';
else
Caption := '';
end;


等同于
if I in [1..5] then

Caption := 'Low'
else if I in [6..10] then
Caption := 'High'
else if (I = 0) or (I in [10..99]) then
Caption := 'Out of range'
else
Caption := '';
 
我以为这样是对的,但编译通不过呀,报错为:

[Error] main.pas(507): Ordinal type required
[Error] main.pas(508): Incompatible types:'Integer' and 'Char'
...(一共四行一样的信息,只不过 是 509、510、511)
[Fatal Error] test.dpr(13): Could not complie used unit 'main.pas'
 
sLs是string类型的吧,,你要转换一下

sLs:='0123456789';
n:=10;
For i:=0 to n do
begin
Case Pchar(Copy(sLs,i,1))^ of
'0': showmessage('00');
'1': showmessage('11');
'2': showmessage('22');
'3': showmessage('33');
else showmessage('无');
end;
end;
 
帮助里面讲得很清楚:
case
用于枚举类型:
ascii,integer,char:可以看作是特殊的枚举类型:
 
是你的数据类型不对!
 
to 枫:
这个问题已经解决了,请问 Pchar 是什么意思?
 
pchar()是一个强行转换成pchar型的函数
 
后退
顶部