zoukankan      html  css  js  c++  java
  • Delphi中函数定义和声明的位置

      当函数(或过程)A定义在函数(或过程)B之前,那么函数B就可以调用函数A,并且编译成功,例如下面的

    procedure TForm1.btn1Click(Sender: TObject); 和   function showstr: string;

    unit Test;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    
    type
      TForm1 = class(TForm)
        btn1: TButton;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    
    function showstr: string;
    begin
      Result:= 'lala';
    end;
    
    procedure TForm1.btn1Click(Sender: TObject);
    begin
       ShowMessage(showstr);
    end;
    
    end.
    

     

       当函数(或过程)A定义在函数(或过程)B之后,那么如果函数B调用函数A,在编译时会报错,如下面的例程

    还是procedure TForm1.btn1Click(Sender: TObject); 和   function showstr: string;

    unit Test;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    
    type
      TForm1 = class(TForm)
        btn1: TButton;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.btn1Click(Sender: TObject);
    begin
       ShowMessage(showstr);
    end;
    
    function showstr: string;      //showstr在TForm1.btn1Click后定义,且没有在它之前进行声明
    begin
      Result:= 'lala';
    end;
    
    end.
    

      要想当函数(或过程)A定义在函数(或过程)B之后,并且函数B调用函数A,在编译时不报错,那就需要现在B前面声明A,然后再在B中调用A,这时候无论A在B之前定义还是在B之后定义,都能够编译成功。如下面的例程

    unit Test;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    function showstr: string;    //首先在interface里面声明
    
    
    type
      TForm1 = class(TForm)
        btn1: TButton;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    
    function showstr: string;
    begin
      Result:= 'lala';
    end;
    
    procedure TForm1.btn1Click(Sender: TObject);
    begin
       ShowMessage(showstr);
    end;
    
    end.
    

      

  • 相关阅读:
    Linux rpm命令详解
    IIS上传文件大小限制和上传时间限制
    .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
    C# Thread、ThreadPool、Task、Invoke、BeginInvoke、async、await 汇总
    iostat 命令详解
    IdentityServer4 配置负载均衡
    Rabbit RPC 代码阅读(一)
    .Wait()与.GetAwaiter()之间有什么区别
    AddTransient,AddScope和AddSingleton 有什么不同?
    微服务ServiceMesh及三种模式介绍
  • 原文地址:https://www.cnblogs.com/xumenger/p/4451119.html
Copyright © 2011-2022 走看看