在源代码中使用子句索引

时间:2018-02-15 06:19:59

标签: delphi

我永远不知道在哪里以及为什么我应该使用使用条款的原因是什么。

unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs; // why put on top ?

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

uses  System.Math, System.IOUtils, System.WideStrUtils; // why put here ?

procedure TForm2.FormCreate(Sender: TObject);
begin
  //
end;

end.

另外,使用单位的首要任务是什么?为什么winapi.windows总是排在第一位,如果不是第一名会发生什么?

1 个答案:

答案 0 :(得分:9)

Help告诉我们:

单位在uses子句中出现的顺序决定初始化的顺序,并影响编译器定位标识符的方式。如果两个单元声明了具有相同名称的变量,常量,类型,过程或函数,编译器将使用uses子句中最后列出的单元

作为第二个原因的示例 - 尝试在Graphics单位之前放置Windows并使用TBitmap