delphi-7 - Unit1.pas(72): 'END' 预期但 'ELSE' 被发现
问题描述
begin
D:=StrToFloat(Edit1.Text);
if (Edit1.Text <= '3' ) And (Edit2.Text >= '1') and (Edit3.Text = '1' ) then
begin
Edit4.Text := '6,3' ;
Edit5.Text := '11-12';
Edit6.Text := '60';
Edit7.Text := '100';
end
else
begin
if(Edit1.Text <= '3' ) And (Edit2.Text >= '1') and (Edit3.Text = '2' ) then
Edit4.Text := '3,2' ;
Edit5.Text := '9-10';
Edit6.Text := '25';
Edit7.Text := '40'
end
else
begin
if(Edit1.Text <= '3' ) And (Edit2.Text >= '1') and (Edit3.Text = '3' ) then
Edit4.Text := '1,6' ;
Edit5.Text := '8-9';
Edit6.Text := '25';
Edit7.Text := '40';
end
end;
我在识别if else
Delphi 7 语句的问题时遇到了一些麻烦 [Error] Unit1.pas(73): ';' 预期但“开始”发现错误。
解决方案
您的代码有不匹配的begin..end
对。修正缩进,你会更清楚地看到这一点:
begin
D:=StrToFloat(Edit1.Text);
if (Edit1.Text <= '3' ) And (Edit2.Text >= '1') and (Edit3.Text = '1' ) then
begin
Edit4.Text := '6,3' ;
Edit5.Text := '11-12';
Edit6.Text := '60';
Edit7.Text := '100';
end
else
begin
if (Edit1.Text <= '3' ) And (Edit2.Text >= '1') and (Edit3.Text = '2' ) then
Edit4.Text := '3,2';
Edit5.Text := '9-10';
Edit6.Text := '25';
Edit7.Text := '40'
end
else
begin
if(Edit1.Text <= '3' ) And (Edit2.Text >= '1') and (Edit3.Text = '3' ) then
Edit4.Text := '1,6' ;
Edit5.Text := '8-9';
Edit6.Text := '25';
Edit7.Text := '40';
end
你有一个错误的if..else..else
顺序。
我猜你打算做更多这样的事情:
begin
D := StrToFloat(Edit1.Text);
if (Edit1.Text <= '3') And (Edit2.Text >= '1') and (Edit3.Text = '1') then
begin
Edit4.Text := '6,3' ;
Edit5.Text := '11-12';
Edit6.Text := '60';
Edit7.Text := '100';
end
else if (Edit1.Text <= '3') And (Edit2.Text >= '1') and (Edit3.Text = '2') then
begin
Edit4.Text := '3,2';
Edit5.Text := '9-10';
Edit6.Text := '25';
Edit7.Text := '40'
end
else if (Edit1.Text <= '3' ) And (Edit2.Text >= '1') and (Edit3.Text = '3') then
begin
Edit4.Text := '1,6' ;
Edit5.Text := '8-9';
Edit6.Text := '25';
Edit7.Text := '40';
end
...
可以稍微简化一下以消除多余的比较:
begin
D := StrToFloat(Edit1.Text);
if (Edit1.Text <= '3') And (Edit2.Text >= '1') then
begin
if (Edit3.Text = '1') then
begin
Edit4.Text := '6,3' ;
Edit5.Text := '11-12';
Edit6.Text := '60';
Edit7.Text := '100';
end
else if (Edit3.Text = '2') then
begin
Edit4.Text := '3,2';
Edit5.Text := '9-10';
Edit6.Text := '25';
Edit7.Text := '40'
end
else if (Edit3.Text = '3') then
begin
Edit4.Text := '1,6' ;
Edit5.Text := '8-9';
Edit6.Text := '25';
Edit7.Text := '40';
end
...
end
...
另外,请注意,您不能使用<=
和类似的运算符>=
来比较字符串,就好像它们是数字一样。您必须先将字符串值转换为数值。您似乎已经通过使用 意识到了这一点StrToFloat()
,但之后您忽略了该值。尝试这样的事情:
begin
D1 := StrToFloat(Edit1.Text);
D2 := StrToFloat(Edit2.Text);
D3 := StrToFloat(Edit3.Text);
if (D1 <= 3) And (D2 >= 1) then
begin
if (D3 = 1) then
begin
Edit4.Text := '6,3' ;
Edit5.Text := '11-12';
Edit6.Text := '60';
Edit7.Text := '100';
end
else if (D3 = 2) then
begin
Edit4.Text := '3,2';
Edit5.Text := '9-10';
Edit6.Text := '25';
Edit7.Text := '40'
end
else if (D3 = 3) then
begin
Edit4.Text := '1,6' ;
Edit5.Text := '8-9';
Edit6.Text := '25';
Edit7.Text := '40';
end
...
end
...
推荐阅读
- angular - 过滤后更新Angular分页器?
- gatsby - Gatsby-node.js:无法读取未定义的属性“allMarkdownRemark”
- c# - C# Excel 进程不会关闭
- php - 如何在 php 中使用 INNSER JOIN 和 BETWEEN
- php - 如何通过 PL/SQL 将结构传递给 oracle PROCEDURE - 绑定问题
- python - 使用 asyncio 将 bash 作为 Python 的子进程运行,但 bash 提示被延迟
- javascript - 避免在javascript中嵌套if
- python - 相对于另一个数组对数组进行排序
- dns - 为什么 dig udemy.com 返回 1.1.1.1?
- python - 从烧瓶应用程序将列表发送回html页面时如何避免在分配之前被引用