procedure TForm1.first;
  function second(i:byte):string;
  begin
    //code
  end;
begin
  //code
end;
这是我在一个软件的源代码中看到的,请问这样写有什么不同的意义吗?

解决方案 »

  1.   

    没什么不同的意义,就是定义了一个函数second在函数first中,它只能在first中使用。
      

  2.   

    函数作用域不同,second只作用在first函数范围内。
      

  3.   

    关键点在于
    second过程可以使用first中的变量,常量
    second相当于first过程的一个子过程,他的作用域仅仅能够在first中使用。
    这样做的目的简化first过程的逻辑,使整个过程看起来更清晰,也更容易
    理解。
      

  4.   

    //请教一下SmallHand大哥,您上述的话可不可以这么理解?
    procedure TForm1.First;
    procedure Second;
    begin
       //这里能访问B?,应该不可以吧!end;
    var
      B:Integer;
    begin
      //这里能访问B
    end;
      

  5.   

    //请教一下SmallHand大哥,您上述的话可不可以这么理解? 
    procedure TForm1.First; 
    var 
      B:Integer;
    procedure Second; 
    begin 
      //这样就能能访问B end; 
     
    begin 
      //这里能访问B 
    end;