Noms de portées d'unités
Remonter à Introduction à RAD Studio
Les noms de portées d'unités sont des préfixes qui sont ajoutés devant les noms d'unités dans les bibliothèques VCL-FMX-RTL. C'est-à-dire que les noms des unités, fonctions, classes et membres ont désormais un nom de porté d'unité ajouté devant le nom de l'unité, comme suit :
Syntaxe et description
<portée-unité>.<nom-unité>. ...
Par exemple, l'unité SysUtils fait maintenant partie de la portée d'unité System, comme suit :
System.SysUtils
et l'unité Controls fait maintenant partie de la portée d'unité Vcl :
Vcl.Controls
Les noms de portées d'unités :
- Classifient les unités en groupes de base tels que Vcl, System, Fmx, et ainsi de suite (les portées d'unités sont classifiées dans Portées d'unités).
- Garantissent la compatibilité du code que vous écrivez en utilisant l'EDI.
- Différencient les membres dont les noms sont ambigus (c'est-à-dire, garantissent une résolution correcte des noms quand le nom d'un membre correspond au nom d'un membre d'une autre unité).
- Commencent typiquement par une lettre majuscule unique suivie de lettres minuscules (par exemple, Vcl et Fmx).
- Sont typiquement constitués d'un élément (par exemple, Winapi), bien que certains sont constitués de deux éléments (par exemple, System.Win).
Les produits tiers, tels que Indy et TeeChart, n'utilisent pas de portées en préfixe des unités. Lors du développement d'un nouveau code avec des composants tiers, l'ajout de noms de portées d'unités n'est pas nécessaire car les entrées uses sont automatiquement préfixées par des portées.
Les développeurs de composants peuvent ajouter des noms de portées d'unités, comme décrit dans Ajout de noms de portées d'unités pour vos propres composants.
Les noms entièrement qualifiés doivent inclure le nom de portée d'unité
A une exception notable, l'ancien code devrait continuer à fonctionner sans modifications. La seule exception est les identificateurs qualifiés ou préfixés par une portée dans le code lui-même. Les noms d'identificateurs entièrement qualifiés nécessitent désormais le préfixage des unités par une portée d'unité. Cela signifie que si vous avez utilisé des identificateurs qualifiés dans votre code existant (qui n'étaient pas préfixés par une portée d'unité), des modifications sont requises pour compiler. Vous devez ajouter le nom de portée d'unité au nom de l'unité.
Par exemple, voici l'identificateur entièrement qualifié de la classe TStream que vous pourriez avoir spécifié dans les releases antérieures du produit :
Classes.TStream
Le nom Classes.TStream n'est plus considéré comme étant un nom de classe entièrement qualifié car les noms entièrement qualifiés doivent maintenant être préfixés par une portée d'unité, c'est-à-dire qu'ils doivent inclure le nom de la portée d'unité. Dans ce cas, le nom de portée d'unité System doit être ajouté au nom d'unité Classes afin de générer un nom entièrement qualifié ou préfixé par une portée d'unité, comme suit :
- Dans Delphi, le nom d'identificateur entièrement qualifié pour TStream est :
-
System.Classes.TStream
-
- Dans C++, les noms de portées d'unités utilisent l'opérateur de portée C++ (
::). Le nom entièrement qualifié pour la classe TStream dans du code C++ est :-
System::Classes::TStream
-
Modifications possibles du code : Si votre code existant contient des identificateurs qualifiés (tels que Classes.TStream.Seek), vous devez corriger le nom afin que l'identificateur soit préfixé par une portée d'unité et entièrement qualifié (tel que System.Classes.TStream.Seek).
Comment spécifier des noms d'unités préfixés par une portée d'unité dans votre code
Pour tout nouveau développement, vous devez spécifier la portée d'unité pour les unités de votre application. Choisissez l'une des méthodes suivantes :
- Partout : Qualifiez entièrement le nom de tous les membres partout dans votre code. L'utilisation d'une qualification complète partout dans votre application, y compris les noms de portées d'unités, garantit les temps de compilation les plus rapides.
- Clause Uses ou #includes : Qualifiez entièrement les noms des unités (avec la portée d'unité et les noms d'unités) dans la clause
usesou dans#include. Vous pouvez ensuite, dans votre code, qualifier partiellement les noms des membres de ces unités que vous avez qualifiées entièrement (y compris la portée d'unité) dans la clauseusesou dans#include. - Dans Options de projet : Ajoutez les noms de portées d'unités dans l'option Noms de portées d'unités sur la page Compilateur Delphi de la boîte de dialogue Options de projet.
Attention : L'utilisation de noms partiellement qualifiés peut ralentir de manière significative le temps de compilation car les compilateurs doivent résoudre tous les noms partiellement qualifiés pendant la compilation.
RAD Studio utilise les portées d'unités, et l'aide utilise aussi les noms de portées d'unités
Les experts et les templates de RAD Studio ont été mis à jour afin d'utiliser et d'inclure correctement les noms d'unités préfixés par une portée d'unité. Dans l'aide, une partie des instances des noms d'unités, de classes et de membres n'incluent pas les noms de portées d'unités. Cependant, la documentation des bibliothèques VCL-FMX-RTL) contient les noms de portées d'unités complets dans les titres des pages.
Cela signifie que certaines fonctionnalités de l'aide peuvent être temporairement indisponibles ; par exemple, à cause des noms de portées d'unités qui ne sont pas construits dans l'aide, F1 pourrait invoquer une rubrique d'aide incorrecte. L'inclusion des noms de portées d'unités dans l'aide est prévue pour une mise à jour de l'aide.
Exemple
Si votre code contient :
uses System.SysUtils, System.Types, System.Classes, FMX.Controls;
ou :
#include <System.SysUtils.hpp> #include <System.Types.hpp> #include <System.Classes.hpp> #include <FMX.Controls.hpp>
Dans votre code, vous pouvez spécifier des noms de membres non qualifiés, tels que :
GetPackageInfo // referring to System.SysUtils.GetPackageInfo TRect // referring to System.Types.TRect TNotifyEvent // referring to System.Classes.TNotifyEvent TTrackBar // referring to FMX.Controls.TTrackBar
Portées d'unités
Il y a beaucoup plus que quelques portées d'unités, mais la plupart des portées d'unités peuvent être regroupées dans quelques catégories générales, notamment Vcl, Database et System. Le tableau suivant liste les catégories générales et les noms de portées d'unités de chaque catégorie :
| Catégorie générale | Noms des portées d'unités de cette catégorie |
|---|---|
|
Associée aux bases de données |
Bde, Data, Data.Bind, Data.Cloud, Datasnap, Datasnap.Win, IB (System.Bindings aussi) |
|
FireMonkey |
FMX, FMX.ASE, FMX.Bind, FMX.Canvas, FMX.DAE, FMX.Filter, FMX.Platform, FMX.Printer |
|
Mac OS X |
Macapi, Posix, System.Mac |
|
Associée au système (bibliothèque d'exécution) |
System, System.Bindings, System.Internal, System.Win |
|
Vcl (bibliothèque de composants visuels) |
Vcl, Vcl.Imaging, Vcl.Samples, Vcl.Shell, Vcl.Touch |
|
SOAP, COM |
|
|
Associée au Web |
|
|
API Windows |
|
|
Traitement XML |
Xml, Xml.Internal, Xml.Win |
- Neuf portées d'unités sont associées aux bases de données (Bde, Data, Data.Bind, Data.Cloud, Data.Win, DataSnap, DataSnap.Win, Db, IB).
- Deux portées d'unités sont associées à FireMonkey (Fmx, Fmx.Bind).
- Trois portées d'unités sont associées au Mac (Macapi, Posix, System.Mac).
- La portée d'unité SOAP contient des unités associées à COM.
- La portée d'unité System a quatre sous-portées (System.Bindings, System.Internal, System.Mac, System.Win).
- Cinq portées d'unités sont associées à VCL (Vcl, Vcl.Bind, Vcl.Imaging, Vcl.Samples, Vcl.Touch).
- Xml.Win contient l'unité Xml.Win.msxmldom associée au traitement XML.
Les portées d'unités et les unités de chaque portée d'unité
Le tableau suivant liste les noms de portées d'unités, et les unités qui appartiennent à chaque portée d'unité :
| Nom de portée d'unité | Unités |
|---|---|
|
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 |
Unités n'ayant pas de portée d'unité
Les unités suivantes existent sans portée d'unité. Ces unités ne nécessitent pas que vous spécifiez un nom de portée d'unité dans la clause uses ou dans #include.
- ActnRes
- AdaptReq
- AutoAdap
- ComApp
- CompProd
- CtlPanel
- DesignEditors
- DesignIntf
- DSAzure
- IBBatchMove et toutes les autres unités IB (InterBase)
- LocaleUtils
- MidItems
- MidProd
- PagItems
- PlatformAPI
- ReqFiles
- ReqMulti
- SessColn
- SHDocVw
- SimpleDS
- SiteComp
- SiteProd
- WebAdapt
- WebComp
- WebContnrs
- WebDisp
- WebFact
- WebForm
- WebModu
- WebScript
- WebSess
- WebUsers
- XMLBrokr
- Xmlxform
- XSLProd
Noms d'unités dans l'ordre alphabétique avec leurs portées d'unités
Pour obtenir une liste de référence des noms d'unités avec leur portée d'unité associée, voir Liste alphabétique des noms d'unités avec les portées d'unités.
Rubriques
- Liste alphabétique des noms d'unités avec les portées d'unités
- Ajout de noms de portées d'unités pour vos propres composants