如何在“uses”子句中创建子库?

时间:2013-04-04 19:34:55

标签: delphi

当我使用Delphi 2006时它回到那里:

 uses System, SysUtils, StrUtils, Windows, Dialogs, WinApi;

但最近我们可以使用:

 uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics;

此更改的工作原理是什么?他们是否将System.pas分隔为System.*.pas,还是创建了一个新的子句,用于在单个库中按类型分隔函数?

如何修改我的旧库以便像这样工作?我想做类似的事情:MyLib.Logic,MyLib.Arrays,MyLib.NetWork等。

3 个答案:

答案 0 :(得分:4)

只需打开ide中的旧文件,然后在项目管理器中重命名该单元。它会自动更改文件中的单位名称。

之后,打开并重新编译旧项目,以确保引用正确的单位名称。

这些点与下划线之类的唯一优势似乎是您可以在代码完成中获得匹配的“子库”列表。

任何点之前的部分不应该被称为“命名空间”,因为它不像一个。

答案 1 :(得分:3)

他们称之为namespaces,他们在Delphi 7左右就已经出现过了,当他们准备发布Delphi 8(Delphi for .NET)时。添加它们是为了支持.NET方面的事情。它们已在Using Namespaces with Delphi中记录。

答案 2 :(得分:3)

您遇到的内容称为Unit Scope Names。更改了各种RTL和VCL单元名称,以更好地区分哪些单元是特定于平台的,哪些是跨平台的。自Delphi.NET推出以来,不仅使用命名空间的单元名称,而且现在甚至单元文件名本身也是命名空间,这是新的。

如果您不编写跨平台代码,则鼓励您使用新语法:

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics

但是,如果您想编写跨平台代码,或者只是需要维护的遗留代码,请继续使用原始语法:

uses
  System, SysUtils, StrUtils, ...;

然后确保根据需要将“Winapi”,“System”,“Vcl”,“Fmx”等前缀包含在项目选项的“单位范围名称”字段中。