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 de RAD Studio (VCL-FMX-RTL).
C'est-à-dire que les noms des unités, fonctions, classes et membres ont un nom de portée d'unité ajouté devant le nom de l'unité, comme suit :
Syntaxe et description
Le nom de portée d'unité précède le nom d'unité :
<unitscope>.<unitname>. ...
Par exemple, l'unité SysUtils fait désormais partie de la portée d'unité System, comme suit :
System.SysUtils
et l'unité Controls fait partie de la portée d'unité Vcl ou FMX : Vcl.Controls
FMX.Controls
Sommaire
Les noms de portées d'unités :
- Classifient les unités en groupes élémentaires 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, Data).
- Sont typiquement constitués d'un élément(par exemple DataSnap), bien que certains soient constitués de deux éléments (par exemple System.Generics).
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 seule exception notable, l'ancien code devrait continuer à fonctionner sans modifications. L'exception concerne 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 TStreamque vous pourriez avoir spécifié dans les releases antérieures du produit :
Classes.TStream
Le nom Classes.TStream n'est pas considéré comme étant un nom de classe entièrement qualifié car les noms entièrement qualifiés doivent ê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
uses
ou 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 clauseuses
ou dans#include
.
- Qualifiez entièrement les noms des unités (avec la portée d'unité et les noms d'unités) dans la clause
- Dans Options de projet :
- Ajoutez les noms de portée d'unité dans l'option Noms de portées d'unités sur la page Compilateur Delphi de la boîte de dialogue Options de projet.
RAD Studio utilise les portées d'unités, et l'aide utilise aussi les noms des portées d'unités
Les experts et les templates de RAD Studio utilisent et incluent correctement les noms d'unités préfixés par une portée d'unité. Dans l'aide, certaines instances de 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 contient les noms de portées d'unités complets dans les titres des pages.
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 des catégories générales. 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 |
iOS |
iOSapi (RTL) |
macOS |
Macapi, Posix, System.Mac (RTL) |
Associée au système (bibliothèque d'exécution) |
System, System.Bindings, System.Generics, System.Math, System.Sensors, System.Tether, 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 |
Winapi (RTL) |
Traitement XML |
Xml, Xml.Internal, Xml.Win |
- Dix portées d'unités sont assocciées à FireMonkey (FMX, FMX.ASE, FMX.Bind, FMX.Canvas, FMX.DAE, FMX.DateTimeControls, FMX.EmbeddedControls, FMX.Filter, FMX.ListView, FMX.MediaLibrary).
- La portée d'unité Soap contient des unités associées à COM.
- La portée d'unité System a plusieurs portées d'unités, parmi lesquelles System.Bindings, System.Generics, System.Math, System.Sensors, System.Tether.
- Quatre portées d'unités sont associées à la VCL (Vcl, Vcl.Imaging, Vcl.Samples, Vcl.Touch).
- La portée d'unité Xml contient quatre unités associées au traitement XML, comme Xml.Win.msxmldom.
Les portées d'unités et les unités de chaque portée d'unité
Le tableau ci-après fournit les informations suivantes :
- Pour les unités documentées dans l'aide, un lien vers la portée d'unité vous permettant de voir les unités qui appartiennent à cette portée d'unité.
- Pour les unités externes non documentées dans l'aide, une liste des unités qui appartiennent à la portée d'unité.
Nom de portée d'unité | Unités |
---|---|
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 |
Voir Data | |
Voir Data.Bind | |
Voir Data.Cloud | |
Voir Datasnap | |
Voir FMX | |
Voir IBX | |
iOSapi (RTL) |
AssetsLibrary, AVFoundation, CocoaTypes, CoreAudio, CoreData, CoreGraphics, CoreImage, CoreLocation, CoreMedia, CoreMotion, CoreTelephony, CoreText, CoreVideo, Foundation, GLKit, MediaPlayer, OpenGLES, QuartzCore, UIKit |
Macapi (RTL) (Frameworks Mac Objective-C) |
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 |
Voir Soap | |
Voir SysInit | |
Voir System | |
Voir System.Win | |
Voir Vcl | |
Web featurerow="radstudio" |
Voir Web |
Voir Winapi | |
Voir Xml |