delphi7的代码 最下面是错误 说什么为什么 再帮忙改正下 谢谢了!
unitUnit1;.....varForm1:TForm1;StrO:string='0';StrL:string='.';S:string;implementatio...
unit Unit1;
.....
var
Form1: TForm1;
StrO:string='0';
StrL:string='.';
S:string;
implementation
{$R *.dfm}
function AddNum(InStr:string;LabStr:string):string;
begin
case instr of //60行
stro:if (labstr<>stro) then addnum:=labstr + instr;
strl:if pos(labstr,strl)=0 then addnum:=labstr + instr;
else
addnum:=labstr + instr;
end;
procedure TForm1.BitBtn21Click(Sender: TObject); //65行
begin
s:=BitBtn21.caption;
lab1.caption:=addnum(s,lab1.caption);
end;
end.
Build
[Error] Unit1.pas(60): Ordinal type required
[Error] Unit1.pas(61): Constant expression expected
[Error] Unit1.pas(62): Constant expression expected
[Error] Unit1.pas(67): Statement expected but 'PROCEDURE' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' 展开
.....
var
Form1: TForm1;
StrO:string='0';
StrL:string='.';
S:string;
implementation
{$R *.dfm}
function AddNum(InStr:string;LabStr:string):string;
begin
case instr of //60行
stro:if (labstr<>stro) then addnum:=labstr + instr;
strl:if pos(labstr,strl)=0 then addnum:=labstr + instr;
else
addnum:=labstr + instr;
end;
procedure TForm1.BitBtn21Click(Sender: TObject); //65行
begin
s:=BitBtn21.caption;
lab1.caption:=addnum(s,lab1.caption);
end;
end.
Build
[Error] Unit1.pas(60): Ordinal type required
[Error] Unit1.pas(61): Constant expression expected
[Error] Unit1.pas(62): Constant expression expected
[Error] Unit1.pas(67): Statement expected but 'PROCEDURE' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' 展开
3个回答
展开全部
将函数function AddNum(InStr:string;LabStr:string):string;
begin
case instr of //60行
stro:if (labstr<>stro) then addnum:=labstr + instr;
strl:if pos(labstr,strl)=0 then addnum:=labstr + instr;
else
addnum:=labstr + instr;
end;
定义成如下:
function AddNum(InStr:string;LabStr:string):string;
begin
if instr=stro then begin
if (labstr<>stro) then result:=labstr + instr;
end else if instr=strl then begin
if pos(strl,labstr)=0 then result:=labstr + instr;
end else begin
result:=labstr + instr;
end;
end;
报错信息解释:
[Error] Unit1.pas(60): Ordinal type required
case后面的表达式只能接Ordinal 类型数据,不能接string类型,可以上网查查Ordinal 类型包括哪些。
[Error] Unit1.pas(61): Constant expression expected
of的分支必须是常量,而stro是字符串变量。
[Error] Unit1.pas(62): Constant expression expected
of的分支必须是常量,而strl是字符串变量。
[Error] Unit1.pas(67): Statement expected but 'PROCEDURE' found
函数function AddNum(InStr:string;LabStr:string):string缺少一个end,你代码里的end是case语句的end,缺少与begin对应的end。
由于你的输入InStr是字符串变量,不建议用case语句,改成以上if...else语句可以达到目的。
另外:
(1)我将你的pos(labstr,strl)改为pos(strl,labstr),不知道对不对,你再证实一下。pos用法中第一个参数是子字符串,第二个参数才是目标字符串,我见strl='.',只有一个字符,应该为子字符串,你应该要在labstr里找strl,不知对否,如果不是,你自己再改改吧。
(2)我将addnum改为result,因为函数返回值是给result(调用时取的也是result值),除非你特别用处,addnum有另外定义,如果另外定义,那么此函数将没有返回值,你后面lab1.caption:=addnum(s,lab1.caption);调用时会出问题。
若还无法解决,请Hi我~
begin
case instr of //60行
stro:if (labstr<>stro) then addnum:=labstr + instr;
strl:if pos(labstr,strl)=0 then addnum:=labstr + instr;
else
addnum:=labstr + instr;
end;
定义成如下:
function AddNum(InStr:string;LabStr:string):string;
begin
if instr=stro then begin
if (labstr<>stro) then result:=labstr + instr;
end else if instr=strl then begin
if pos(strl,labstr)=0 then result:=labstr + instr;
end else begin
result:=labstr + instr;
end;
end;
报错信息解释:
[Error] Unit1.pas(60): Ordinal type required
case后面的表达式只能接Ordinal 类型数据,不能接string类型,可以上网查查Ordinal 类型包括哪些。
[Error] Unit1.pas(61): Constant expression expected
of的分支必须是常量,而stro是字符串变量。
[Error] Unit1.pas(62): Constant expression expected
of的分支必须是常量,而strl是字符串变量。
[Error] Unit1.pas(67): Statement expected but 'PROCEDURE' found
函数function AddNum(InStr:string;LabStr:string):string缺少一个end,你代码里的end是case语句的end,缺少与begin对应的end。
由于你的输入InStr是字符串变量,不建议用case语句,改成以上if...else语句可以达到目的。
另外:
(1)我将你的pos(labstr,strl)改为pos(strl,labstr),不知道对不对,你再证实一下。pos用法中第一个参数是子字符串,第二个参数才是目标字符串,我见strl='.',只有一个字符,应该为子字符串,你应该要在labstr里找strl,不知对否,如果不是,你自己再改改吧。
(2)我将addnum改为result,因为函数返回值是给result(调用时取的也是result值),除非你特别用处,addnum有另外定义,如果另外定义,那么此函数将没有返回值,你后面lab1.caption:=addnum(s,lab1.caption);调用时会出问题。
若还无法解决,请Hi我~
展开全部
Ordinal type required 需要时带序的类型(字面上翻译)
case 后面跟数值类型
修改办法
unit Unit1;
.....
var
Form1: TForm1;
StrO:string='0';
StrL:string='.';
S:string;
strLsit : TStringList;
implementation
{$R *.dfm}
formCreate事件加上
strLsit := TStringList.Create;
strList.Add(stro);
strList.Add(strl);
formClose事件加上
strList.free;
函数改为
function AddNum(InStr:string;LabStr:string):string;
begin
case strList.Indexof(instr) of //60行
0:if (labstr<>stro) then addnum:=labstr + instr;
1:if pos(labstr,strl)=0 then addnum:=labstr + instr;
else
addnum:=labstr + instr;
end;
简单调整,而且方便动态扩充
case 后面跟数值类型
修改办法
unit Unit1;
.....
var
Form1: TForm1;
StrO:string='0';
StrL:string='.';
S:string;
strLsit : TStringList;
implementation
{$R *.dfm}
formCreate事件加上
strLsit := TStringList.Create;
strList.Add(stro);
strList.Add(strl);
formClose事件加上
strList.free;
函数改为
function AddNum(InStr:string;LabStr:string):string;
begin
case strList.Indexof(instr) of //60行
0:if (labstr<>stro) then addnum:=labstr + instr;
1:if pos(labstr,strl)=0 then addnum:=labstr + instr;
else
addnum:=labstr + instr;
end;
简单调整,而且方便动态扩充
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在Delphi的分支语句中,只能允许使用常量(整型或者枚举类型),记忆中是这样,没有查实:),你使用的是string类型,所以报错!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询