ユニット スコープ名

提供: Appmethod Topics
移動先: 案内検索

FireMonkey ライブラリの導入 への移動

ユニット スコープ名は、Appmethod ライブラリ群(FMX-RTL)に含まれているユニット名の先頭に付けられる接頭辞です。 つまり、ユニット、関数、クラス、メンバの名前では、以下のように、ユニット名の先頭にユニット スコープ名が付きます。

構文と説明

次のように、ユニット名の前にユニット スコープ名が付くようになりました。

<ユニット スコープ>.<ユニット名>. ...

たとえば、以下のように、SysUtils ユニットは System ユニット スコープの一部になっています。

System.SysUtils

また、次のように、Controls ユニットは FMX ユニット スコープの一部になっています。

FMX.Controls

ユニット スコープ名の特徴は以下のとおりです。

  • ユニットを、System、FMX などの基本グループに分類します(ユニット スコープはこの後の「ユニット スコープ」セクションで分類されています)。
  • IDE を使って作成するコードの互換性を確保します。
  • あいまい(複数の解釈が可能)な名前のメンバを識別します(つまり、メンバの名前が別のユニットのメンバの名前と一致したときでも、名前の解決を必ず正しく行えるようにします)。
  • 通常、大文字の 1 文字で始まり、その後に小文字の文字列が続きます(たとえば、Data など)。
  • 通常は 1 つの要素で構成されますが、2 つの要素で構成されるものもあります(たとえば System.Generics など)。


完全修飾名にはユニット スコープ名が必要

たとえば、TStream クラスの部分修飾識別子は、次のとおりです。

Classes.TStream

Classes.TStream という名前は完全修飾クラス名とは見なされません。完全修飾名はユニット スコープ設定されている、つまり、ユニット スコープ名を含んでいる必要があるからです。この場合、ユニット スコープ設定された名前つまり完全修飾名にするには、次のように、ユニット スコープ名 SystemClasses ユニット名に付加する必要があります。

  • Object Pascal では、TStream の完全修飾識別子名は次のようになります。
    System.Classes.TStream
  • C++ では、C++ スコープ演算子(::)がユニット スコープ名で使用されます。TStream クラスの完全修飾名は、C++ コードでは次のようになります。
    System::Classes::TStream


ユニット スコープ設定されたユニット名をコードで指定する方法

新規開発の場合は、アプリケーション内のユニットにユニット スコープを指定する必要があります。それには、以下のいずれかの方法を選択します。

  • あらゆる場所で:
    コード全体を通して、すべてのメンバの名前を完全修飾します。アプリケーション全体を通して完全修飾名を使用しユニット スコープ名を名前に含めることで、コンパイル時間は確実に短縮されます。
  • uses 句または #include 指令で:
    uses 句または #include 指令で、(ユニット スコープ名とユニット名を使って)ユニット名を完全修飾します。そうすれば、コードでは、uses 句または #include 指令で(ユニット スコープを使って)完全修飾したユニットのメンバの名前については、部分修飾で済ませることができます。
  • [<プロジェクト名> のプロジェクト オプション]ダイアログ ボックスで:
    [<プロジェクト名> のプロジェクト オプション]ダイアログ ボックスの[Object Pascal コンパイラ]ページの[ユニット スコープ名]オプションにユニット スコープ名を追加します。

YellowBang.png注意: 部分修飾名を使用すると、コンパイル中にコンパイラがすべての部分修飾名を解決する必要があるため、コンパイルが著しく遅くなるおそれがあります。

Appmethod ではユニット スコープを使用しヘルプでもユニット スコープ名を使用

Appmethod に用意されているウィザードやテンプレートでは、適切にユニット スコープ設定されたユニット名を使用し組み込んでいます。ヘルプでは、一部のユニット名、クラス名、メンバ名に、まだユニット スコープ名が付加されていません。ただし、ライブラリのドキュメントでは、完全なユニット スコープ名がページ タイトルに示されています。


コードに以下が記述されている場合

 uses
   System.SysUtils, System.Types, System.Classes, FMX.Controls;

または

#include <System.SysUtils.hpp>
#include <System.Types.hpp>
#include <System.Classes.hpp>
#include <FMX.Controls.hpp>

コードでは、たとえば次のような修飾されていないメンバ名を指定することができます。

  GetPackageInfo  // System.SysUtils.GetPackageInfo を参照
  TRect           // System.Types.TRect を参照
  TNotifyEvent    // System.Classes.TNotifyEvent を参照
  TTrackBar       // FMX.Controls.TTrackBar を参照

ユニット スコープ

かなりの数のユニット スコープがありますが、それらの大半はいくつかの一般的なカテゴリに分類することができます。これらの一般的なカテゴリとそれぞれのカテゴリに属するユニット スコープ名の一覧を次の表に示します。

一般的なカテゴリ そのカテゴリに属するユニット スコープ名

データベース関連

DataData.BindData.Cloud、IB(さらに System.Bindings

FireMonkey

FMXFMX.ASEFMX.BindFMX.CanvasFMX.DAEFMX.FilterFMX.PlatformFMX.Printer

iOS

iOSapi(RTL)

Mac OS X

Macapi、Posix、System.Mac(RTL)

システム関連(ランタイム ライブラリ)

SystemSystem.BindingsSystem.GenericsSystem.MathSystem.SensorsSystem.Tether

VCL(ビジュアル コンポーネント ライブラリ)

VclVcl.ImagingVcl.Samples、Vcl.Shell、Vcl.Touch

SOAP、COM

Soap

Web 関連

WebWeb.Win

Windows API

Winapi(RTL)

XML 処理

Xml、Xml.Internal、Xml.Win

  • 10 個のユニット スコープが FireMonkey 関連です(FMX、FMX.ASE、FMX.Bind、FMX.Canvas、FMX.DAE、FMX.DateTimeControls、FMX.EmbeddedControls、FMX.Filter、FMX.ListView、FMX.MediaLibrary)。
  • Soap ユニット スコープには COM 関連のユニットが含まれています。
  • System ユニット スコープにはいくつかのユニット スコープが含まれています(System.Bindings、System.Generics、System.Math、System.Sensors、System.Tether など)。
  • Xml ユニット スコープには、XML 処理に関係する 4 つのユニット(Xml.Win.msxmldom など)が含まれています。

ユニット スコープおよび各ユニット スコープに属するユニット

以下の表には次の情報が示されています。

  • ヘルプに記載されているユニットの場合は、ユニット スコープへのハイパーリンクが記載されており、それをたどれば、そのユニット スコープに属するユニットを参照できます。
  • ヘルプに記載されていない外部ユニットの場合は、そのユニット スコープに属するユニットの一覧が示されています。
ユニット スコープ名 ユニット

Androidapi(RTL)

AppGlue、AssetManager、AssetManagaerIni、Bitmap、Configuration、Consts、Egl、Eglext、EglPlatformGles、Gles2、Gles2ext、Glesext、Input、IOUtils、JNI.Analytics、JNI.ApkExpansion、JNI.App、JNI.Dalvik、JNI.Embarcadero、JNI.GraphicsContentViewText、JNI.Hardware、JNI.InputMethodService、JNI.JavaTypes、JNI.Licensing、JNI.Location、JNI.Media、JNI.Net、JNI.OpenGL、JNI.Os、Jni、JNI.PlayServices、JNI.Provider、JNI.Support、JNI.Telephony、JNI.Util、JNI.VideoView、JNI.WebKit、JNI.Widget、JNIBridge、JNIMarshal、Keycodes、KhrPlatform、Log、Looper、NativeActivity、NativeWindow、NativeWindowJni、Obb、OpenSles、Rect、Sensor、StorageManager

Data

Data」を参照

Data.Bind

Data.Bind」を参照

Data.Cloud

Data.Cloud」を参照

Datasnap

Datasnap」を参照

FMX
FireMonkey アプリケーション プラットフォーム

FMX」を参照

IBX

IBX」を参照

iOSapi(RTL)

AssetsLibrary、AVFoundation、CocoaTypes、CoreAudio、CoreData、CoreGraphics、CoreImage、CoreLocation、CoreMedia、CoreMotion、CoreTelephony、CoreText、CoreVideo、Foundation、GLKit、MediaPlayer、OpenGLES、QuartzCore、UIKit

Macapi(RTL)(Mac Objective-C フレームワーク)

AppKit、CocoaTypes、CoreFoundation、CoreServices、Foundation、Mach、ObjCRuntime、ObjectiveC、OCMarshal、OpenGL、QuartzCore、Security、SystemConfiguration、VarObjC

Posix
(Mac OS X)(RTL)

ArpaInet、Base、Dirent、Dlfcn、Errno、Fcntl、Fnmatch、Grp、Iconv、Langinfo、Limits、Locale、NetDB、NetIf、NetinetIcmp6、NetinetIn、NetinetIp6、Posix、Pthread、Pwd、Sched、Semaphore、Signal、StdDef、Stdio、Stdlib、String_、StrOpts、SysMman、SysSelect、SysSocket、SysStat、SysStatvfs、SysSysctl、SysTime、SysTimes、Systypes、SysUio、SysWait、Termios、Time、Unistd、Utime、Wchar、Wctype、Wordexp

Soap

Soap」を参照

SysInit

SysInit」を参照

System

System」を参照

System.Win

System.Win」を参照

Vcl

ビジュアル コンポーネント ライブラリ

Vcl」を参照

Web style="display: none;"

Web」を参照

Winapi

Winapi」を参照

Xml

Xml」を参照


関連トピック

関連項目