Unit-Gültigkeitsbereichsnamen

Aus RAD Studio
Wechseln zu: Navigation, Suche

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

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 der uses-Klausel oder der #include-Anweisung voll qualifizierte Unit-Namen (mit dem Unit-Gültigkeitsbereich) verwendet haben.
  • In Projektoptionen:
    Fügen Sie auf der Seite Delphi-Compiler des Dialogfeldes "Projektoptionen" der Option Unit-Gültigkeitsbereichsnamen die Unit-Gültigkeitsbereichsnamen hinzu.
Warnung: 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 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

Soap

Webbezogen

Web, Web.Win

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

Data

Siehe Data

Data.Bind

Siehe Data.Bind

Data.Cloud

Siehe Data.Cloud

Datasnap

Siehe Datasnap

FMX
(FireMonkey-Anwendungsplattform)

Siehe FMX

IBX

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
(macOS) (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

Siehe Soap

SysInit

Siehe SysInit

System

Siehe System

System.Win

Siehe System.Win

Vcl

(Visuelle Komponentenbibliothek)

Siehe Vcl

Web featurerow="radstudio"

Siehe Web

Winapi

Siehe Winapi

Xml

Siehe Xml

Themen

Siehe auch