首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unit1.pas(72):应为'END‘,但找到了'ELSE’

Unit1.pas(72):应为'END‘,但找到了'ELSE’
EN

Stack Overflow用户
提问于 2020-05-03 00:01:03
回答 1查看 146关注 0票数 0
代码语言:javascript
复制
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 Delphi7语句错误Unit1.pas(73)的问题时遇到了一些麻烦:';‘预期但'BEGIN’发现了错误。

EN

回答 1

Stack Overflow用户

发布于 2020-05-03 03:36:41

您的代码具有不匹配的begin..end对。修正缩进,你会看得更清楚:

代码语言:javascript
复制
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序列。

我猜你是想做更多像这样的事情:

代码语言:javascript
复制
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
  ...

可以稍微简化一下,以消除冗余的比较:

代码语言:javascript
复制
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(),您似乎已经意识到了这一点,但后来您忽略了该值。尝试如下所示:

代码语言:javascript
复制
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
  ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61562330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档