====== $MODESSWITCH ======
La directive de compilation ''{$MODESWITCH }'' permet d'activer ou de désactiver les fonctionnalités du mode individuel sans modifier le mode de compilation actuel.
Ce commutateur est un commutateur global, et peut être utilisé partout où le commutateur [[https://www.freepascal.org/docs-html/3.2.0/prog/progsu105.html#x113-1140001.3.21|{$MODE}]] peut être utilisé.
La syntaxe est la suivante :
{$MODESWITCH XXX} // Active
{$MODESWITCH XXX+} // identique à {$MODESWITCH XXX}
{$MODESWITCH XXX-} // Désactive
La fonction XXX peut être l'une des suivantes :
== CLASSE ==
Utilisez les classes pascal object.
== OBJPAS ==
Inclure automatiquement l'unité ObjPas.
== RESULT ==
Activez l'identificateur de ''result'' pour les résultats des fonctions.
== PCHARTOSTRING ==
Permettre la conversion automatique des chaînes de caractères à terminaison nulle en chaînes de caractères,
== CVAR ==
Autoriser l'utilisation du mot-clé CVAR.
== NESTEDCOMMENTS ==
Permettre l'utilisation de commentaires imbriqués.
== CLASSICPROCVARS ==
Utiliser les variables procédurales classiques.
== MACPROCVARS ==
Utiliser des variables procédurales de type mac.
== REPEATFORWARD ==
La déclaration de mise en œuvre et la déclaration de transmission doivent correspondre complètement.
== POINTERTOPROCVAR ==
Permettre la conversion silencieuse des pointeurs en variables procédurales.
== AUTODEREF ==
Déréférencement automatique (silencieux) des pointeurs dactylographiés.
== INITFINAL ==
Permettre l'utilisation de l'initialisation et de la finalisation
== ANSISTRINGS ==
Autoriser l'utilisation des ansistrings.
== OUT ==
Permet d'utiliser le type de paramètre out.
== DEFAULTPARAMETERS ==
Permettre l'utilisation de valeurs de paramètres par défaut.
== HINTDIRECTIVE ==
Soutenir les directives d'indication (déprédation, plate-forme, etc.)
== DUPLICATELOCALS ==
Permettre aux variables locales des méthodes de classe d'avoir les mêmes noms que les propriétés de la classe.
== PROPERTIES ==
Autoriser l'utilisation des biens.
== ALLOWINLINE ==
Autoriser les procédures en ligne.
== EXCEPTIONS ==
Permettre le recours à des exceptions.
== ADVANCEDRECORDS ==
permettre l'utilisation d'enregistrements avancés (c'est-à-dire des enregistrements avec des méthodes)
Exemple:
{ Exemple d'advanced Records }
TQRange = packed record
private
FLeft: QWord;
FRight: QWord;
procedure SetLeft(AValue: QWord);
procedure SetRight(AValue: QWord);
public
property Left: QWord read FLeft write SetLeft;
property Right: QWord read FRight write SetRight;
class operator in (const AValue: QWord;const ARange: TQRange): boolean;
end;
== UNICODESTRINGS ==
est par défaut une chaîne unicode.
== TYPEHELPERS ==
Autoriser l'utilisation d'aides à la saisie.
== CBLOCKS ==
Blocs de style C.
== ISOIO ==
entrée/sortie comme requis par l'ISO pascal.
== ISOPROGRAMPARAS ==
Paramètres de programme tels que requis par l'ISO pascal.
== ISOMOD ==
mod comme requis par l'ISO pascal.
== ISOUNARYMINUS ==
Unary moins comme requis par l'ISO pascal.
====== Sources & Ressources ======
* [[https://wiki.lazarus.freepascal.org/modeswitch]]
* [[https://www.freepascal.org/docs-html/3.2.0/prog/progsu106.html#x114-1150001.3.22]]