Unit-Gültigkeitsbereichsnamen
Nach oben zu Einführung in RAD Studio
Unit-Gültigkeitsbereichsnamen sind Präfixe, die Unit-Namen in den VCL-FMX-RTL-Bibliotheken vorangestellt werden. Das heißt, Namen von Units, Funktionen, Klassen und Membern enthalten nun einen Unit-Gültigkeitsbereichsnamen vor dem Unit-Namen:
Syntax und Beschreibung
<unitscope>.<unitname>. ...
Beispielsweise ist die Unit SysUtils jetzt Teil des Unit-Gültigkeitsbereichs System:
System.SysUtils
und die Unit Controls ist jetzt Teil des Unit-Gültigkeitsbereichs Vcl:
Vcl.Controls
Unit-Gültigkeitsbereichsnamen:
- Ordnen Units in Basisgruppen, wie Vcl, System, Fmx usw., ein (Unit-Gültigkeitsbereiche sind in Unit-Gültigkeitsbereiche klassifiziert).
- Stellen die Kompatibilität des in der IDE geschriebenen Codes sicher.
- Differenzieren Member, deren Namen mehrdeutig sind (d.h. stellen eine korrekte Namensauflösung sicher, wenn der Name eines Member mit dem Namen eines Member einer anderen Unit übereinstimmt).
- Beginnen normalerweise mit einem einzelnen Großbuchstaben gefolgt von Kleinbuchstaben (wie Vcl und Fmx).
- Bestehen normalerweise aus einem Element (wie z.B. Winapi); es sind aber auch zwei Elemente möglich (wie System.Win).
Produkte von Fremdherstellern, wie Indy und TeeChart, sind nicht von Unit-Gültigkeitsbereichen abhängig. Beim Entwickeln von neuem Code mit Komponenten von Fremdherstellern ist das Hinzufügen von Unit-Gültigkeitsbereichsnamen nicht erforderlich, weil hinzugefügte uses-Einträge automatisch bereichsabhängig sind.
Komponentenentwickler können Unit-Gültigkeitsbereichsnamen hinzufügen (siehe Hinzufügen von Unit-Gültigkeitsbereichsnamen für eigene Komponenten).
Voll qualifizierte Namen müssen den Unit-Gültigkeitsbereichsnamen enthalten
Mit einer besonderen Ausnahme sollte alter Code weiterhin ohne Änderungen funktionsfähig sein. Die eine Ausnahme bezieht sich auf bereichsabhängige oder qualifizierte Bezeichner im Code selbst. Für voll qualifizierte Bezeichnernamen sind jetzt Unit-Gültigkeitsbereiche erforderlich. Das bedeutet, dass bei Verwendung von qualifizierten Bezeichnern in Ihrem vorhandenen Code (der nicht von Unit-Gültigkeitsbereichen abhängig war) für die Compilierung Änderungen erforderlich sind. Sie müssen dem Unit-Namen den Unit-Gültigkeitsbereichsnamen hinzufügen.
Im Folgenden finden Sie zum Beispiel den voll qualifizierten Bezeichner der Klasse TStream, den Sie in früheren Produkt-Releases so angegeben hätten:
Classes.TStream
Der Name Classes.TStream gilt nun nicht mehr als voll qualifizierter Klassenname, weil ein voll qualifizierter Klassenname jetzt einen Unit-Gültigkeitsbereich enthalten muss, das heißt, der Unit-Gültigkeitsbereichsname muss angegeben sein. In diesem Fall muss dem Unit-Namen Classes der Unit-Gültigkeitsbereichsname System hinzugefügt werden, damit ein Unit-gültigkeitsbereichsabhängiger oder voll qualifizierter Name erzielt wird und zwar folgendermaßen:
- In Delphi lautet der voll qualifizierte Bezeichnername für TStream:
-
System.Classes.TStream
-
- In C++ verwenden Unit-Gültigkeitsbereichsnamen den C++-Gültigkeitsbereichsoperator (
::). Der voll qualifizierte Name für die Klasse TStream lautet in C++-Code:-
System::Classes::TStream
-
Mögliche Codeänderungen: Wenn Ihr vorhandener Code qualifizierte Bezeichner (wie Classes.TStream.Seek) enthält, müssen Sie die Namen korrigieren, damit die Bezeichner die Unit-Gültigkeitsbereiche angeben und voll qualifiziert sind (wie System.Classes.TStream.Seek).
Angeben von Unit-Gültigkeitsbereichsnamen für Units im Quellcode
Beim Entwickeln neuer Anwendungen müssen Sie den Unit-Gültigkeitsbereich für Units angeben. Dazu stehen Ihnen verschiedene Möglichkeiten zur Verfügung:
- Überall: Verwenden Sie voll qualifizierte Namen für alle Member in Ihrem gesamten Code. Die Verwendung einer vollständigen Qualifizierung, einschließlich von Unit-Gültigkeitsbereichsnamen, in Ihrer gesamten Anwendung gewährleistet die schnellste Compilierung.
- Uses-Klausel oder #includes: Verwenden Sie in der
uses-Klausel oder der#include-Anweisung voll qualifizierte Namen (mit dem Unit-Gültigkeitsbereich und den Unit-Namen). In Ihrem Code können Sie dann die Namen von Membern derjenigen Units teilweise qualifizieren, für die sie in deruses-Klausel oder der#include-Anweisung voll qualifizierte Unit-Namen (mit dem Unit-Gültigkeitsbereich) verwendet haben. - In Projektoptionen: Fügen Sie der Option Unit-Gültigkeitsbereichsnamen auf der Seite Delphi-Compiler des Dialogfeldes Projektoptionen die Unit-Gültigkeitsbereichsnamen hinzu.
Achtung: Die Verwendung von teilweise qualifizierten Namen kann die Compilierung signifikant verlangsamen, weil die Compiler alle teilweise qualifizierten Namen während der Compilierung auflösen müssen.
RAD Studio verwendet Unit-Gültigkeitsbereiche und die Hilfe verwendet auch Unit-Gültigkeitsbereichsnamen
Die Experten und Vorlagen in RAD Studio wurden aktualisiert, damit sie Unit-Gültigkeitsbereichsnamen verwenden und korrekt einbeziehen. In der Hilfe werden bei einigen Vorkommen von Unit-, Klassen- und Member-Namen noch keine Unit-Gültigkeitsbereichsnamen verwendet. Die Dokumentation der FMX-VCL-RTL-Bibliotheken hat vollständige Unit-Gültigkeitsbereichsnamen in den Seitentiteln.
Beispiel
Wenn Ihr Code Folgendes enthält:
uses System.SysUtils, System.Types, System.Classes, FMX.Controls;
oder:
#include <System.SysUtils.hpp> #include <System.Types.hpp> #include <System.Classes.hpp> #include <FMX.Controls.hpp>
Können Sie in Ihrem Code unqualifizierte Member-Namen wie folgt angeben:
GetPackageInfo // referring to System.SysUtils.GetPackageInfo TRect // referring to System.Types.TRect TNotifyEvent // referring to System.Classes.TNotifyEvent TTrackBar // referring to FMX.Controls.TTrackBar
Unit-Gültigkeitsbereiche
Es gibt eine Vielzahl von Unit-Gültigkeitsbereichen, aber die meisten können in ein paar allgemeine Kategorien, wie z.B. Vcl, Datenbank und System, gruppiert werden. Die folgende Tabelle führt die allgemeinen Kategorien und die Unit-Gültigkeitsbereichsnamen in jeder Kategorie auf:
| Allgemeine Kategorie | Unit-Gültigkeitsbereichsnamen in dieser Kategorie |
|---|---|
|
Datenbankbezogen |
Bde, Data, Data.Bind, Data.Cloud, Datasnap, Datasnap.Win, IB (System.Bindings auch) |
|
FireMonkey |
FMX, FMX.ASE, FMX.Bind, FMX.Canvas, FMX.DAE, FMX.Filter, FMX.Platform, FMX.Printer |
|
Mac OS X |
Macapi, Posix, System.Mac |
|
Systembezogen (Laufzeitbibliothek) |
System, System.Bindings, System.Internal, System.Win |
|
VCL (Visuelle Komponentenbibliothek) |
Vcl, Vcl.Imaging, Vcl.Samples, Vcl.Shell, Vcl.Touch |
|
SOAP, COM |
|
|
Web-bezogen |
|
|
Windows-API |
|
|
XML-Verarbeitung |
Xml, Xml.Internal, Xml.Win |
- Neun Unit-Gültigkeitsbereiche beziehen sich auf Datenbanken (Bde, Data, Data.Bind, Data.Cloud, Data.Win, DataSnap, DataSnap.Win, Db, IB).
- Zwei Unit-Gültigkeitsbereiche beziehen sich auf FireMonkey (Fmx, Fmx.Bind).
- Drei Unit-Gültigkeitsbereiche beziehen sich auf den Mac (Macapi, Posix, System.Mac).
- Der SOAP-Unit-Gültigkeitsbereich enthält COM-bezogene Units.
- Der Unit-Gültigkeitsbereich "System" hat vier Untergültigkeitsbereiche (System.Bindings, System.Internal, System.Mac, System.Win).
- Die VCL hat fünf zugehörige Unit-Gültigkeitsbereiche (Vcl, Vcl.Bind, Vcl.Imaging, Vcl.Samples, Vcl.Touch).
- Xml.Win enthält die Unit Xml.Win.msxmldom, die sich auf die XML-Verarbeitung bezieht.
Unit-Gültigkeitsbereiche und die Units in jedem Unit-Gültigkeitsbereich
Die folgende Tabelle enthält die Unit-Gültigkeitsbereichsnamen und die Units, die jeweils zu diesem Unit-Gültigkeitsbereich gehören:
| Unit-Gültigkeitsbereichsname | Units |
|---|---|
|
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 |
Units ohne Unit-Gültigkeitsbereichsnamen
Die folgenden Units gehören keinem Unit-Gültigkeitsbereich an. Für diese Units müssen Sie in der uses-Klausel oder der #include-Anweisung keine Unit-Gültigkeitsbereichsnamen angeben.
- ActnRes
- AdaptReq
- AutoAdap
- ComApp
- CompProd
- CtlPanel
- DBAdapt
- DBAdaptImg
- DesignEditors
- DesignIntf
- DSAzure
- IB, IBBlob, und alle anderen IB-Units (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
Unit-Namen in alphabetischer Reihenfolge mit ihren Unit-Gültigkeitsbereichen
Eine Referenzliste der Unit-Namen mit den zugehörigen Unit-Gültigkeitsbereichsnamen finden Sie unter Alphabetische Liste der Unit-Namen mit Unit-Gültigkeitsbereichen.
Themen
- Alphabetische Liste der Unit-Namen mit Unit-Gültigkeitsbereichen
- Hinzufügen von Unit-Gültigkeitsbereichsnamen für eigene Komponenten