Noms de portées d'unités

De RAD Studio
Aller à : navigation, rechercher

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

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 clause uses ou dans #include.
  • 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.

YellowBang.pngAttention : 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 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)

OS X

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

Soap

Associée au Web

Web, Web.Win

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

Data

Voir Data

Data.Bind

Voir Data.Bind

Data.Cloud

Voir Data.Cloud

DataSnap

Voir Datasnap

FMX
(Plate-forme d'application FireMonkey)

Voir FMX

IBX

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
(OS X) (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

Voir Soap

SysInit

Voir SysInit

System

Voir System

System.Win

Voir System.Win

Vcl

(bibliothèque de composants visuels)

Voir Vcl

Web featurerow="radstudio"

Voir Web

Winapi

Voir Winapi

Xml

Voir Xml

Rubriques

Voir aussi