Unit-Gültigkeitsbereichsnamen
Nach oben zu Einführung in RAD Studio
Unit-Gültigkeitsbereichsnamen sind Präfixe, die Unit-Namen in den RAD Studio-Bibliotheken (VCL/FMX/RTL) vorangestellt werden.
Das heißt, Namen von Units, Funktionen, Klassen und Membern enthalten einen Unit-Gültigkeitsbereichsnamen vor dem Unit-Namen:
Syntax und Beschreibung
Der Unit-Gültigkeitsbereichsname steht vor dem Unit-Namen:
<unitscope>.<unitname>. ...
Beispielsweise ist die Unit SysUtils jetzt Teil des Unit-Gültigkeitsbereichs System:
System.SysUtils
und die Unit Controls ist Teil des Unit-Gültigkeitsbereichs Vcl oder FMX: Vcl.Controls
FMX.Controls
Inhaltsverzeichnis
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 Data).
- Bestehen normalerweise aus einem Element (wie z. B. DataSnap), es sind aber auch zwei Elemente möglich (wie System.Generics).
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. Diese 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 Änderungen für die Compilierung bei Verwendung von qualifizierten Bezeichnern in Ihrem vorhandenen Code (der nicht von Unit-Gültigkeitsbereichen abhängig war) erforderlich sind. Sie müssen dem Unit-Namen den Unit-Gültigkeitsbereichsnamen hinzufügen.
Beispielsweise lautet der voll qualifizierte Bezeichner der Klasse TStream, den Sie in früheren Produkt-Releases angegeben hätten, folgendermaßen:
Classes.TStream
Der Name Classes.TStream gilt nun nicht mehr als voll qualifizierter Klassenname, weil voll qualifizierte Klassennamen jetzt einen Unit-Gültigkeitsbereich enthalten müssen, 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, um einen Unit-gültigkeitsbereichsabhängigen oder voll qualifizierten Namen zu erhalten 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 in Ihrem vorhandenen Code qualifizierte Bezeichner (wie Classes.TStream.Seek
) enthalten sind, müssen Sie den Namen die Unit-Gültigkeitsbereiche hinzufügen, damit sie 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:
- Qualifizieren Sie alle Namen aller Member in Ihrem gesamten Code vollständig. 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:
- Qualifizieren Sie Unit-Namen (mit dem Unit-Gültigkeitsbereich und den Unit-Namen) in der
uses
-Klausel oder der#include
-Anweisung vollständig. 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.
- Qualifizieren Sie Unit-Namen (mit dem Unit-Gültigkeitsbereich und den Unit-Namen) in der
- In Projektoptionen:
- Fügen Sie auf der Seite Delphi-Compiler des Dialogfeldes "Projektoptionen" der Option Unit-Gültigkeitsbereichsnamen die Unit-Gültigkeitsbereichsnamen hinzu.
RAD Studio verwendet Unit-Gültigkeitsbereiche und in der Hilfe werden ebenfalls Unit-Gültigkeitsbereichsnamen verwendet
In den Experten und Vorlagen in RAD Studio werden jetzt korrekte Unit-Gültigkeitsbereichsnamen verwendet und einbezogen. In der Hilfe werden bei einigen Vorkommen von Unit-, Klassen- und Member-Namen keine Unit-Gültigkeitsbereichsnamen verwendet. In den Seitentiteln der Bibliotheksdokumentation sind jedoch die vollständigen Unit-Gültigkeitsbereichsnamen enthalten.
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 wenige allgemeine Kategorien 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 (auch System.Bindings) |
FireMonkey |
FMX, FMX.ASE, FMX.Bind, FMX.Canvas, FMX.DAE, FMX.Filter, FMX.Platform, FMX.Printer |
iOS |
iOSapi (RTL) |
macOS |
Macapi, Posix, System.Mac (RTL) |
Systembezogen (Laufzeitbibliothek) |
System, System.Bindings, System.Generics, System.Math, System.Sensors, System.Tether, System.Win |
VCL (Visuelle Komponentenbibliothek) |
Vcl, Vcl.Imaging, Vcl.Samples, Vcl.Shell, Vcl.Touch |
SOAP, COM |
|
Webbezogen |
|
Windows-API |
Winapi (RTL) |
XML-Verarbeitung |
Xml, Xml.Internal, Xml.Win |
- Zehn Unit-Gültigkeitsbereiche beziehen sich auf FireMonkey (FMX, FMX.ASE, FMX.Bind, FMX.Canvas, FMX.DAE, FMX.DateTimeControls, FMX.EmbeddedControls, FMX.Filter, FMX.ListView, FMX.MediaLibrary).
- Der Unit-Gültigkeitsbereich Soap enthält COM-bezogene Units.
- Der Unit-Gültigkeitsbereich System hat mehrere Unit-Gültigkeitsbereiche, einschließlich System.Bindings, System.Generics, System.Math, System.Sensors, System.Tether.
- Vier Unit-Gültigkeitsbereiche beziehen sich auf die VCL (Vcl, Vcl.Imaging, Vcl.Samples, Vcl.Touch).
- Der Unit-Gültigkeitsbereich Xml enthält die vier Units, die sich auf die XML-Verarbeitung beziehen, wie z. B. Xml.Win.msxmldom.
Unit-Gültigkeitsbereiche und die Units im jeweiligen Unit-Gültigkeitsbereich
Die nachstehende Tabelle enthält folgende Informationen:
- Für Units, die in der Hilfe dokumentiert sind, ist ein Link auf den Unit-Gültigkeitsbereich angegeben, in dem die zu diesem Unit-Gültigkeitsbereich gehörenden Units aufgeführt sind.
- Für externe Units, die nicht in der Hilfe dokumentiert sind, sind die zu diesem Unit-Gültigkeitsbereich gehörenden Units aufgeführt.
Unit-Gültigkeitsbereichsname | Units |
---|---|
Androidapi (RTL) |
AppGlue, AssetManager, AssetManagaerIni, Bitmap, Configuration, Consts, Egl, Eglext, EglPlatform Gles, 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 |
Siehe Data | |
Siehe Data.Bind | |
Siehe Data.Cloud | |
Siehe Datasnap | |
Siehe FMX | |
Siehe 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 Frameworks) |
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 |
Siehe Soap | |
Siehe SysInit | |
Siehe System | |
Siehe System.Win | |
Siehe Vcl | |
Web featurerow="radstudio" |
Siehe Web |
Siehe Winapi | |
Siehe Xml |