回 帖 发 新 帖 刷新版面

主题:在线求救  关于if 句型

有代码:
   if memo1.Modified then
  begin
  returnvalue:=messagedlg('文件没保存,要保存吗?',mtwarning,[mbyes,mbno,mbno,mbcancel],0);
  if returnvalue=mryes then//需要保存
  begin
  toolbutton3.click;
  memo1.Modified:=false;
  end
  else//不需要保存
  if returnvalue=mrno then
  memo1.Modified:=false;
  end;

   小弟我怎么也看不懂那个else怎么和第一个if配对,我认为应和第2个if配对~

回复列表 (共5个回复)

沙发

你是对的!

板凳

那这个句型的else是通常是和哪个if配对啊

3 楼

if 条件 then
begin
  if 条件 then
  begin
    
  end
  else
  begin
    if 条件 then
    begin
      
    end;
  end;
end;
它的原型;

4 楼

if memo1.Modified then
begin
  returnvalue:=messagedlg('文件没保存,要保存吗?',mtwarning,mbyes,mbno,mbno,mbcancel],0);
  if returnvalue=mryes then//需要保存
  begin  //复合语句到‘end‘
    toolbutton3.click;
    memo1.Modified:=false;
  end //和下面的else配对,所以后面没有分号
  else//不需要保存
    if returnvalue=mrno then  memo1.Modified:=false; //单语句以分号结束,后面没有'end;',如果此处是复合语句,则前面应用'Begin',后面应用'end;'
end;


    复合语句以'begin'开头,而以'end;'结束,如果这个复合语句是在分支语句的if部分且后面有else语句,则end后面没有分号,因为分号将意味首整合分支语句的结束,else部分就没用了,所以不能那么做。如果else部分是个复合语句,也同样将以begin而以'end;'结束,这个分号意味着整个分支语句结束。如果Else分支语句是一个单语句,则该语句以分号结束就行了,这个分号即是当前语句的结束符,也是整个if...else语句的结束符。

例1:
if 条件 then
  单语句  //无分号,表示后面有else
else
  单语句;//此分号结束当前语句,也结束整个分支语句

例2:
if 条件 then
begin
  复合语句;
end //无分号,表示后面有else
else
begin
  复合语句;
end; //此分号结束整个分支语句


例3:
if 条件 then
begin
  复合语句;
end
else
  单语句; ////此分号结束当前语句,也结束整个分支语句

5 楼

呵呵,高手就是高手,回贴都这么详细,真让小弟我感动啊~!

我来回复

您尚未登录,请登录后再回复。点此登录或注册