delphi7的代码 最下面是错误 说啥为啥 再帮忙改正下 谢谢了!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi7的代码 最下面是错误 说啥为啥 再帮忙改正下 谢谢了!相关的知识,希望对你有一定的参考价值。

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'

将函数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我~
参考技术A 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;
简单调整,而且方便动态扩充
参考技术B 在Delphi的分支语句中,只能允许使用常量(整型或者枚举类型),记忆中是这样,没有查实:),你使用的是string类型,所以报错!

本周遇见的错误

这几天遇到的问题贼多,都忘的差不多了,想起来啥就说啥吧。
先从安装软件开始说吧,第一个安装的应该是:
centos7安装tomcat
一无所知的我首先开始百度起来,发现tomcat的安装是依赖jdk的, 所以安装tomcat必须先安装 jdk,结果一个都没找到,最后的解决办法是从别人电脑上拷贝的。
.jdk已经安装好,但是使用 java -version 显示未找到命令,我们需要添加环境变量,在脚本下面添加下面内容。
vim /etc/profile
技术图片
当时这一步也是弄了老半天,接下来还是跟着百度来
然后进入到/data/server/apache-tomcat-8.5.40/bin目录下,开始启动
./startup.sh ,结果失败了,又经过一番折腾,防火墙没关
systemctl stop firewalld
关闭之后可以了, 查看有没有启动
ps aux |grep tomcat
2.(ip出不来)
对了,我感觉这几天链接Xshell 也是个问题,之前都在用Ubunto
之前看他们每次连都有点困难,我每次链接都还顺利,就是老断
ip找不到,( 解决办法:进入到vi /etc/sysconfig/network-scripts/ifcfg-ens33下,改一下配置文件
技术图片
本来是no,改为yes就行了。
然后我在操作一步,service network restart,说实话这一步干啥我都不知道反正每次就这样操作一下,刚问了一下,(重启网络)这次应该记住了,说白了就是懒不想记,然后ip a 就行了。
3.csvn安装
安装csvn之前需要安装JDK,如果之前安装过,我就直接安装csvn
在百度下载csvn包,安装半天没有成功,最后发现包下载错了,
然后安装 桂老师发的,就行了
到给用户设置密码这又卡着了,突然让输密码,都没设置让我输什么,最后用echo 123456|passwd --stdin svnuser这个命令解决了
下面跟着做也没发现啥问题。
4.(tomcat设置密码)
tomcat安装好的,百度上需要添加环境,搜了几个都没有成功
最后还是看别人弄好的做的+
vi /data/server/tomcat8/conf/tomcat-users.xml
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat7" password="666666" roles="tomcat,manager-gui,admin-gui"/>
<user username="both" password="123456" roles="tomcat,role1"/>
<user username="role1" password="111111" roles="role1"/>
</tomcat-users>
在脚本下面添加这么多内容,
还是不成功,该怎么办
cd /data/server/tomcat8/webapps/manager/META-INF/

<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1" />
-->
进入脚本把这些注释掉
5 .安装centos7最小化ifconfig
使用不了我,安装了一个net-tools包就行了
用 yum -y install ifconfig 安装是不行的
技术图片
就这吧,属实想不出来了,加油吧!

以上是关于delphi7的代码 最下面是错误 说啥为啥 再帮忙改正下 谢谢了!的主要内容,如果未能解决你的问题,请参考以下文章

为啥我登录谷歌play商店说啥与谷歌连接断开,稍后再试?求解答

VS2010 配置OGRE,在运行OGRE.sln时报错“无法打开All_Build”说啥不存在,这是为啥啊?

怎样用python画图,为啥代码写好运行时错误?

delphi7 中如何点击菜单项弹出新窗体

我的tomcat的startup.bat之前好使,现在一闪而过,为啥

delphi中用try异常处理不提示理啊。用的是delphi7