4

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などのようなものを作りたいです。

4

3 に答える 3

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」などのプレフィックスが含まれていることを確認します。

于 2013-04-04T20:59:15.143 に答える