ユニット スコープ名
RAD Studio 入門 への移動
ユニット スコープ名は、VCL-FMX-RTL ライブラリ群に含まれているユニット名の先頭に付けられる接頭辞です。 つまり、ユニット、関数、クラス、メンバの名前では、以下のように、ユニット名の先頭にユニット スコープ名が付くようになりました。
目次 |
構文と説明
<unitscope>.<unitname>. ...
たとえば、以下のように、SysUtils ユニットは System ユニット スコープの一部となりました。
System.SysUtils
また、以下のように、Controls ユニットは Vcl ユニット スコープの一部となりました。
Vcl.Controls
ユニット スコープ名の特徴は以下のとおりです。
- ユニットを、Vcl、System、Fmx などの基本グループに分類します(ユニット スコープはこの後の「ユニット スコープ」セクションで分類されています)。
- IDE を使って作成するコードの互換性を確保します。
- あいまい(複数の解釈が可能)な名前のメンバを識別します(つまり、メンバの名前が別のユニットのメンバの名前と一致したときでも、名前の解決を必ず正しく行えるようにします)。
- 通常、大文字の 1 文字で始まり、その後に小文字の文字列が続きます(たとえば、Vcl や Fmx)。
- 通常は 1 つの要素(たとえば Winapi など)で構成されますが、2 つの要素で構成されるものもあります(たとえば System.Win など)。
Indy や TeeChart などのサードパーティ製品には、ユニット スコープが設定されていません。 サードパーティ コンポーネントで新しいコードを開発する際には、ユニット スコープ名を付ける必要はありません。uses 句に追加されるエントリには自動的にスコープが設定されるからです。
「独自作成したコンポーネントへのユニット スコープ名の追加」のセクションで説明しているように、コンポーネント開発者はユニット スコープ名を追加できます。
完全修飾名にはユニット スコープ名が必要
1 つの注目すべき例外を除き、従来のコードは変更せずに引き続き動作するはずです。 1 つの例外というのは、コードそのものに含まれているスコープ付き識別子つまり修飾識別子です。 完全修飾識別子名には、ユニット スコープ設定が必要になりました。 つまり、既存のコード(ユニット スコープを設定していない)で修飾識別子を使用した場合は、コンパイルするのに変更が必要です。 ユニット名にユニット スコープ名を付加する必要があります。
たとえば、TStream クラスの完全修飾識別子は、以前の製品リリースであれば以下のように指定しました。
Classes.TStream
Classes.TStream という名前はもう完全修飾クラス名とは見なされません。完全修飾名はユニット スコープ設定されていなければならなくなった、つまり、ユニット スコープ名を含んでいる必要があるからです。 この場合、ユニット スコープ設定された名前つまり完全修飾名にするには、以下のように、ユニット スコープ名 System を Classes ユニット名に付加する必要があります。
- Delphi では、 TStream の完全修飾識別子名は次のようになります。
-
System.Classes.TStream
-
- C++ では、C++ スコープ演算子(
::)がユニット スコープ名で使用されます。 TStream クラスの完全修飾名は、C++ コードでは次のようになります。-
System::Classes::TStream
-
考え得るコードの変更: 既存のコードに修飾識別子(たとえば Classes.TStream.Seek など)が含まれている場合は、識別子がユニット スコープ設定され完全修飾されたもの(たとえば System.Classes.TStream.Seek など)になるように、名前を修正する必要があります。
ユニット スコープ設定されたユニット名をコードで指定する方法
新規開発の場合は、アプリケーション内のユニットにユニット スコープを指定する必要があります。 それには、以下のいずれかの方法を選択します。
- あらゆる場所で: コード全体を通して、すべてのメンバの名前を完全修飾します。 アプリケーション全体を通して完全修飾名を使用しユニット スコープ名を名前に含めることで、コンパイル時間は確実に短縮されます。
- uses 句または #include 指令で:
uses句または#include指令で、(ユニット スコープ名とユニット名を使って)ユニット名を完全修飾します。 そうすれば、コードでは、uses句または#include指令で(ユニット スコープを使って)完全修飾したユニットのメンバの名前については、部分修飾で済ませることができます。 - [プロジェクト オプション]ダイアログ ボックスで: [プロジェクト オプション]ダイアログ ボックスの [Delphi コンパイラ] ページの[ユニット スコープ名]オプションにユニット スコープ名を追加します。
注意: 部分修飾名を使用すると、コンパイル中にコンパイラがすべての部分修飾名を解決する必要があるため、コンパイルが著しく遅くなるおそれがあります。
RAD Studio はユニット スコープを使用し、ヘルプもまたユニット スコープ名を使用するように
RAD Studio に用意されているウィザードやテンプレートは、ユニット スコープ設定されたユニット名を適切に使用し組み込むように既に更新されています。 ヘルプでは、一部のユニット名、クラス名、メンバ名に、まだユニット スコープ名が付加されていません。 ただし、VCL-FMX-RTL Libraries documentation では、ユニット スコープの完全名がページ タイトルに追加されています。
例
コードに以下が記述されている場合
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 を参照
ユニット スコープ
かなりの数のユニット スコープがありますが、それらの大半は、Vcl、Database、System などのいくつかの一般的なカテゴリに分類できます。 これらの一般的なカテゴリと各カテゴリに属するユニット スコープ名の一覧を以下の表に示します。
| 一般的なカテゴリ | そのカテゴリに属するユニット スコープ名 |
|---|---|
|
データベース関連 |
Bde, Data, Data.Bind, Data.Cloud, Datasnap, Datasnap.Win, IB (また System.Bindings) |
|
FireMonkey |
FMX, FMX.ASE, FMX.Bind, FMX.Canvas, FMX.DAE, FMX.Filter, FMX.Platform, FMX.Printer |
|
Mac OS X |
Macapi, Posix, System.Mac |
|
システム関連(ランタイム ライブラリ) |
System, System.Bindings, System.Internal, System.Win |
|
VCL(ビジュアル コンポーネント ライブラリ) |
Vcl, Vcl.Imaging, Vcl.Samples, Vcl.Shell, Vcl.Touch |
|
SOAP、COM |
|
|
Web 関連 |
|
|
Windows API |
|
|
XML 処理 |
Xml, Xml.Internal, Xml.Win |
- データベース関連のユニット スコープは 9 個(Bde、Data、Data.Bind、Data.Cloud、Data.Win、DataSnap、DataSnap.Win、Db、IB)です。
- FireMonkey 関連のユニット スコープは 2 個(Fmx、Fmx.Bind)です。
- Mac 関連のユニット スコープは 3 個(Macapi、Posix、System.Mac)です。
- SOAP 関連のユニット スコープには COM 関連のユニットが含まれています。
- System ユニット スコープには 4 個のサブスコープ(System.Bindings、System.Internal、System.Mac、System.Win)があります。
- VCL 関連のユニット スコープは 5 個(Vcl、Vcl.Bind、Vcl.Imaging、Vcl.Samples、Vcl.Touch)です。
- Xml.Win には、XML 処理に関連する Xml.Win.msxmldom ユニットが含まれています。
ユニット スコープおよび各ユニット スコープに属するユニット
ユニット スコープ名と各ユニット スコープに属するユニットの一覧を以下の表に示します。
| ユニット スコープ名 | ユニット |
|---|---|
|
Bde |
BDE, Bdeconst, DBBdeWeb, DbTables, DrTable, SMINTF |
|
Data |
DB, DBByteBuffer, DBCommon, DBCommonTypes, DBConnAdmin, DBConsts, DBPlatform, DBXClassRegistry, DBXClient, DBXClientResStrs, DBXCommon, DBXCommonIndy, DBXCommonResStrs, DBXCommonTable, DbxCompressionFilter, DBXDataExpressMetaDataProvider, DbxDatasnap, DBXDBReaders, DBXDelegate, DBXDynalink, DBXDynalinkNative, DBXEncryption, DBXJSON, DBXJSONCommon, DBXJSONReflect, DBXMemoryRow, DBXMessageHandlerCommon, DBXMessageHandlerJSonClient, DBXMessageHandlerJSonCommon, DBXMessageHandlerJSonServer, DBXMessageHandlerServer, DBXMetaDataCommand, DBXMetaDataCommandFactory, DBXMetadataCommon, DBXMetaDataError, DBXMetaDataNames, DBXMetaDataProvider, DBXMetaDataReader, DBXMetaDataUtil, DBXMetaDataWriter, DBXMetaDataWriterFactory, DBXOpenSSL, DBXOpenSSLRes, DBXPlatform, DBXPool, DBXReaderTableStorage, DBXRSAFilter, DbxSocketChannelNative, DBXSqlScanner, DBXStream, DBXStreamer, DBXStreamPlatform, DBXTableFactory, DBXTrace, DBXTransport, DBXTransportFilter, DBXTypedTableStorage, DSUtil, FMTBcd, SqlConst, SqlExpr, SqlTimSt |
|
Data.Win |
ADOConst, ADODB |
|
Data.Bind |
Components, Consts, DBLinks, DBScope, Editors, EngExt |
|
Data.Cloud |
AmazonAPI, AzureAPI, Azure, AzureBlob, AzureMessageDialog, AzureQueueMetadataDialog, AzureQueue, AzureTableDialog, AzureTableRowDialog, AzureTable, AzureUI |
|
Datasnap |
DataBkr, DBClient, DSAuth, DSAzure, DSClientMetadata, DSClientResStrs, DSClientRest, DSCommonProxy, DSCommonServer, DSCommonTable, DSConnect, DSHTTP, DSHTTPCommon, DSHTTPLayer, DSHTTPServiceProxyDispatcher, DSHTTPWebBroker, DSLoginDlg, DSIntf, DSNames, DSPlatform, DSProxy, DSProxyCpp, DSProxyCppRest, DSProxyDelphi, DSProxyDelphiRest, DSProxyDispatcher, DSProxyRest, DSProxyWriter, DSProxyWriterRegistry, DSReflect, DSServer, DSServerResStrs, DSService, DSTCPServerTransport, DSTransport, Midas, MidConst, Provider |
|
Datasnap.Win |
MConnect, MidasCon, MtsRdm, ObjBrkr, SConnect, TConnect |
|
Fmx |
Ani, Canvas.D2D, Colors, Context.DX9, Controls, Dialogs, Edit, Effects, ExtCtrls, Filter, Filter.Effects, FilterCatBlur, FilterCatColor, FilterCatColorAdjust, FilterCatComposite, FilterCatDistortion, FilterCatGenerator, FilterCatGeometry, FilterCatStyle, FilterCatTiles, FilterCatTransition, Forms, Grid, Layers3D, Layouts, ListBox, Memo, Menus, Objects, Objects3D, Platform, Platform.Win, Printer, Printer.Win, TabControl, TreeView, Types, Types3D, Video |
|
Fmx.Bind |
Consts, DBEngExt, Editors, Handlers
|
|
Macapi |
AppKit, CocoaTypes, CoreFoundation, CoreServices, Foundation, Mach, ObjCRuntime, ObjectiveC, OCMarshal, OpenGL, QuartzCore, Security, SystemConfiguration, VarObjC |
|
Posix |
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 |
EncdDecd, HTTPSOAPTBind, HTTPUtil, inquire_vcl, IntfInfo, InvConst, Invoker, InvokeRegistry, OPConvert, OPConvertOptions, OPToSOAPDomConv, OPToSOAPDomCustom, Rio, SOAInv, SOAPAttach, SOAPAttachIntf, SOAPConn, SOAPConst, SOAPDm, SOAPDomConv, SOAPHTTPClient, SOAPHTTPPasInv, SOAPHTTPTrans, SOAPLinked, SOAPMidas, TypeTrans, UDDIHelper, WebBrokerSOAP, WebNode, WebServerExp, WSDLBind, WSDLIntf, WSDLItems, WSDLLookup, WSDLNode, WSDLPub, WSDLSOAP, WSILIntf, XSBuiltIns Soap.Win unit scope CertHelper |
|
System |
AnsiStrings, Character, Classes, Contnrs, ConvUtils, DateUtils, DebugUtils, Diagnostics, Generics.Collections, Generics.Defaults, HelpIntfs, Inifiles, IOUtils, Masks, MaskUtils, Math, ObjAuto, RegularExpressions, RegularExpressionsCore, RTLConsts, Rtti, ShareMem, SimpleShareMem, StdConvs, StrUtils, SyncObjs, SysConst, SysUtils, TimeSpan, Types, TypInfo, UITypes, VarCmplx, VarConv, Variants, VarUtils, WideStrings, WideStrUtils, ZLib, ZLibConst |
|
System.Bindings |
CustomScope, CustomWrapper, Consts, EvalProtocol, EvalSys, Evaluator, Expression, ExpressionDefaults, Factories, Graph, Helper, Manager, ManagerDefaults, Methods, NotifierContracts, NotifierDefaults, ObjEval, Outputs, Search |
|
System.Internal |
MachExceptions, Unwinder, VarHlpr, StrHlpr |
|
System.Mac |
CFUtils |
|
System.Win |
ComConsts, ComObj, ComObjWrapper, Comserv, Mtsobj, ObjComAuto, Registry, ScktComp, StdVCL, VCLCom |
|
Vcl (Visual Component Library) |
ABAccessibility, ActnColorMaps, ActnCtrls, ActnList, ActnMan, ActnMenus, ActnPopup, ActnRes, AdaptReq, ADODB, AnsiStrings, AppEvnts, AutoAdap, AutoDisp, AxCtrls, BandActn, ButtonGroup, Buttons, Calendar, CaptionedDockTree, CategoryButtons, CGIApp, CGIHTTP, Character, CheckLst, Clipbrd, CmAdmCtl, ColorGrid, ComCtrls, ComStrs, Consts, Controls, ConvUtils, CtlPanel, CustomizeDlg, DBActns, DBCGrids, DBCtrls, DBGrids, DBLogDlg, DBLookup, DBOleCtl, DBPWDlg, DdeMan, Dialogs, Direct2D, DockTabSet, ExtActns, ExtCtrls, ExtDlgs, ExtThemes, FileCtrl, Forms, Graphics, GraphUtil, Grids, HTMLHelpViewer, ImgList, IMouse, LibHelp, ListActns, Mask, Menus, MPlayer, OleAuto, OleConst, OleCntnrs, OleCtrls, OleServer, Outline, PlatformDefaultStyleActnCtrls, Printers, recerror, Ribbon, RibbonActnCtrls, RibbonActnMenus, RibbonConsts, RibbonGalleryBar, RibbonLunaStyleActnCtrls, RibbonObsidianStyleActnCtrls, RibbonSilverStyleActnCtrls, RibbonStyleActnCtrls, ScreenTips, ShadowWnd, Shell.ShellConsts, Shell.ShellCtrls, ShellAnimations, StdActnMenus, StdActns, StdCtrls, StdStyleActnCtrls, SvcMgr, TabNotBk, Tabs, ThemedActnCtrls, Themes, TimeSpan, ToolWin, ValEdit, VDBConsts, WinHelpViewer, XPActnCtrls, XPMan, XPStyleActnCtrls |
|
Vcl.Bind |
Consts, DBEngExt, Editors, Handlers |
|
Vcl.Imaging |
GIFConsts, GIFImg, JConsts, jpeg, pngextra, pngimage, pnglang |
|
Vcl.Samples |
Calendar, DirOutln, Gauges, Spin |
|
Vcl.Shell |
ShellConsts, ShellCtrls |
|
Vcl.Touch |
GestureConsts, GetureCtrls, GestureMgr, Gestures, Keyboard, KeyboardTypes |
|
Web |
ApacheApp, ApacheHTTP, ApacheTwoApp, ApacheTwoHTTP, AutoDisp, BrkrConst, CGIApp, CGIHTTP, DBWeb, DBXpressWeb, DSProd, HTTPApp, HTTPD, HTTPD2, HTTPProd, HTTPUtil, WebBroker, WebCntxt, WebConst, WebFileDispatcher, WebReq |
|
Web.Win |
ISAPIApp, IsapiHTTP, Sockets |
|
Winapi |
AccCtrl, AclAPI, ActiveX, ADOInt, AspTlb, COMAdmin, CommCtrl, CommDlg, ComSvcs, Cor, CorError, CorHdr, Cpl, D2D1, D3DX8, D3DX9, DDEml, Direct3D, Direct3D8, Direct3D9, DirectDraw, DirectInput, DirectMusic, DirectPlay8, DirectSetup, DirectShow9, DirectSound, Dlgs, DwmApi, DX7toDX8, DxDiag, DXErr8, dXErr9, DXFile, DxgiFormat, DXTypes, FlatSB, GDIAPI, GDIOBJ, GDIPUTIL, ImageHlp, Imm, IpExport, IpHlpApi, IpRtrMib, IpTypes, Isapi, Isapi2, KnownFolders, LZExpand, Manipulations, Mapi, Messages, MMSystem, MSInkAut, MsInkAut15, msxml, Mtx, MultiMon, Nb30, ObjectArray, Ole2, oleacc, OleCtl, OleDlg, OpenGL, Penwin, PenWinapi, PropKey, PropSys, PsAPI, Qos, RegStr, RichEdit, RtsCom, ShellAPI, SHFolder, ShlObj, ShLwApi, StructuredQuery, StructuredQueryCondition, THelp32, TpcShrd, UrlMon, UxTheme, Wincodec, WinCtrl, Windows, WinInet, Winsafer, WinSock, WinSock2, WinSpool, WinSvc, WMF9 |
|
Xml |
adomxmldom, DTDSchema, XDRSchema, XMLConst, XMLDataToSchema, XMLDoc, xmldom, XMLIniFile, XMLIntf, XMLSchema, XMLSchema99, XMLSchemaTags |
|
Xml.Internal |
AbnfUtils, AdomCore_4_3, CodecUtilsWin32, EncodingUtils, LangUtils, ParserUtilsWin32, TreeUtils, UriUtils, WideStringUtils, XmlRulesUtils |
|
Xml.Win |
msxmldom |
ユニット スコープ名のないユニット
以下のユニットは、ユニット スコープ設定されずに存在しています。 これらのユニットを使用する場合は、uses 句や #include 指令でユニット スコープ名を指定する必要はありません。
- ActnRes
- AdaptReq
- AutoAdap
- ComApp
- CompProd
- CtlPanel
- DBAdapt
- DBAdaptImg
- DesignEditors
- DesignIntf
- DSAzure
- IB、IBBlob、および、他のすべての IB (InterBase) ユニット
- MidItems
- MidProd
- PagItems
- PlatformAPI
- ReqFiles
- ReqMulti
- SessColn
- SHDocVw
- SimpleDS
- SiteComp
- SiteProd
- WebAdapt
- WebComp
- WebContnrs
- WebDisp
- WebFact
- WebForm
- WebModu
- WebScript
- WebSess
- WebUsers
- XMLBrokr
- Xmlxform
- XSLProd
ユニット名とそれに対応するユニット スコープ名のアルファベット順一覧
ユニット名とそれに関連するユニット スコープ名の一覧については、「ユニット名とユニット スコープ名の対応(アルファベット順一覧)」を参照してください。