Section courante

A propos

Section administrative du site

 Langage  Installation  Elément  Tutoriel  Programmation  Bibliothèque  Cadre d'application  SDK  Composante  Projet  .NET  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Delphi 1
Delphi Professionnel 3.0
Introduction
Les remarques
Les oérateurs
Les instructions conditionnelles
Les instructions de boucles
Les instructions d'exceptions
Type de données élémentaires
Référence de mots réservés (mots clefs)
Référence des unités
Définition de procédures et de fonctions
Référence de procédures et fonctions
Référence des classes
Référence de constantes
Référence de variables
Référence des directives de compilation
Entier
Réel
Chaine de caractères
Pointeur
Détaillé
CLASSES
COMCTRLS
CONTROLS
DBTABLES
DIALOGS
FILECTRL
FORMS
LZEXPAND
MATH
PRINTERS
STDCTRLS
SYSTEM
SYSUTILS
Catégorie
Prototype
ANSI
ASCIZ
Base de registres
Boite de dialogue
Comptabilité
Colorimétrie
Date
Ensemble
Fichier
Imprimante
Mémoire
Monétaire
Police de caractères
Processus
Statistique
Temps
Trigonométrie
Web
Les premiers pas
Le langage Object Pascal : classes et objets
La bibliothèque d'exécution
Les classes de base de la bibliothèque
Bonjour
Astronomie
Biochimie
Conversion
Courriel
Électricité
Fichiers
Finance
Géographie
Géométrie
Histoire
Jeux & stratégies
Mathématique
Médicale
Météorologie
Océanographie
Sport
Système d'exploitation
Temps
Tri
Trigonométrie
Validation
Phase lunaire
Calcul du calcium corrigé
Calcul le taux d'alcoolémie
Bin,Hex,Base62,...
Validation
Tarif d'une piscine pour 1 mois
Texte séquentiel
IPaymt/Interet
NPer
PPaymt/Principal
Distance en Km entre deux longitudes et latitudes
Aire d'un cercle
Aire d'une surface de prisme rectangulaire
Aire d'un triangle
Distance entre deux points
Chiffre romain
Tetris
Ackermann
Exp
Factoriel
Fibonacci
Log
Nombre premier
Odd
Random
Sqrt
Triangle Pascal
Hauteur utérine
Unité de mesure
Fréquence des vagues
Hockey
Créer un raccourci sur le bureau
Visualiser les variables d'environnement
Année bissextile
Calendrier
Date de la Pâque
Heure courante
FirstDayOfMonth
Tri à bulle (Bubble Sort)
Tri Shell Sort
ArcCos
ArcSin
Atn/ATan/ArcTan
Cos
Sin
Courriel
Extension de nom de domaine
Alcinoe
ALGLIB
Ararat Synapse
CryptoLib4Pascal
Delphi JOSE and JWT Library
Delphi-OpenSSL
Delphi Redis Client
FBLib (Firebird Pascal Library)
FireDAC
INDY (Internet Direct)
Kastri
Mars-Curiosity
QuickLib
QuickLogger
RESTRequest4Delphi
Skia4Delphi
SynPDF
UniDAC
WinGraph
ZeosLib
Daraja (cadre d'application pour Web)
DelphiMVCFramework
DORM (Delphi ORM)
FireMonkey
Horse
LoggerPro
Router4Delphi
Spring4D
Synopse mORMot
tiOPF
TMS WEB Core
uniGUI
AWS SDK for Delphi
Remoting SDK
Python for Delphi (P4D)
VCL (Visual Component Library)
HeidiSQL
Inno Setup
JEDI
Delphi for .NET
RemObjects Chrome
Delphi versus VB
Bibliographie
Index
Préface
Notes légal
Dictionnaire
Recherche

La bibliothèque d'exécution

Le langage de programmation Delphi utilise Object Pascal comme langage de programmation et privilégie une approche orientée objet, liée à un style de développement visuel. Ainsi Delphi propose que de nombreuses fonctionnalités prêtes à l'emploi dans sa bibliothèque d'exécution, ou le RTL (Run-Time Library) en abrégé. Il s'agit d'un vaste ensemble de fonctions que vous pouvez utiliser pour effectuer des tâches simples, ainsi que des tâches complexes, dans votre code Delphi.

Les unités du RTL

Au fil des versions Delphi, le RTL ou bibliothèque d'exécution a changé sa structure et plusieurs nouvelles unités se sont ajoutés. La raison de l'ajout de nouvelles unités est que de nombreuses nouvelles fonctions ont été ajoutées. Dans la plupart des cas, vous trouverez les fonctions existantes dans les unités où elles se trouvaient, mais les nouvelles fonctions apparaîtront dans des unités spécifiques. Par exemple, les nouvelles fonctions liées aux dates sont désormais dans l'unité DateUtils, mais les fonctions de date existantes n'ont pas été déplacées de SysUtils afin d'éviter des incompatibilités avec le code existant.

L'exception à cette règle concerne certaines des fonctions de prise en charge des variantes, ayant été déplacées hors de l'unité System pour éviter les liaisons indésirables de bibliothèques Windows spécifiques, même dans les programmes n'utilisaient pas ces fonctionnalités. Ces fonctions de variante font désormais partie de la nouvelle unité Variants.

Une partie de votre code Delphi existant peut avoir besoin d'utiliser cette nouvelle unité Variants pour se recompiler. Le Delphi est suffisamment intelligent pour reconnaître cela et inclure automatiquement l'unité Variants dans les projets utilisant le type Variant, en émettant uniquement un avertissement.

Un peu de réglage fin a également été appliqué pour réduire la taille minimale d'un fichier exécutable, parfois agrandi par l'inclusion indésirable de variables globales ou de code d'initialisation.

Les unités System et SysInit

L'unité System est l'unité centrale du RTL et est automatiquement inclus dans toute compilation (en considérant une instruction d'utilisation automatique et implicite y faisant référence). En fait, si vous essayez d'ajouter l'unité à l'instruction Uses d'un programme, vous obtiendrez l'erreur de compilation :

[Error] Identifier redeclared: System

L'unité System comprend, entre autres :

L'unité compagnon de System, appelée SysInit, comprend le code d'initialisation du système, avec des fonctions que vous utiliserez rarement directement. Il s'agit d'une autre unité étant toujours implicitement incluse, car elle est utilisée par l'unité System.

Nouveau dans l'unité System

Les nouveaux changements concernent le fait de rendre le noyau RTL de Delphi plus portable multiplateforme, en remplaçant les fonctionnalités spécifiques à Windows par des mises en oeuvres génériques. Il y a de nouveaux noms pour les types d'interface, une prise en charge totalement révisée des variantes, de nouveaux types de pointeurs, une prise en charge de tableaux dynamiques et des fonctions pour personnaliser la gestion des objets d'exception.

Un autre ajout pour la compatibilité avec Linux concerne les sauts de ligne dans les fichiers texte. Il existe une nouvelle variable DefaultTextLineBreakStyle, pouvant être définie sur tlbsLF ou tlbsCRLF, et une nouvelle constante de chaîne de caractères sLineBreak, ayant la valeur #13#10 dans la version Windows de Delphi et la valeur #10 dans la version Linux. Le style de saut de ligne peut également être défini fichier par fichier avec la fonction SetTextLineBreakStyle.

Enfin, l'unité System inclut désormais les structures TFileRec et TTextRec, étant définies dans l'unité SysUtils dans les versions antérieures de Delphi.

Les unités SysUtils et SysConst

L'unité SysConst définit quelques chaînes de caractères constantes utilisées par les autres unités RTL pour afficher les messages. Ces chaînes de caractères sont déclarées avec le mot clef resourcestring et enregistrées dans les ressources du programme. Comme d'autres ressources, elles peuvent être converties au moyen du gestionnaire de conversion intégré ou du gestionnaire de conversion externe.

L'unité SysUtils est un ensemble de fonctions utilitaires système de différents types. Différente des autres unités RTL, c'est en grande partie une unité dépendante du système d'exploitation. L'unité SysUtils n'a pas de focus spécifique, mais elle inclut un peu de tout, de la gestion des chaînes de caractèrse à la prise en charge des paramètres régionaux et des caractères multi-octets, de la classe Exception et de plusieurs autres classes d'exceptions dérivées à une pléthore de constantes et de routines de formatage de chaîne de caractères.

Certaines des fonctionnalités de SysUtils sont utilisées chaque jour par chaque programmeur en tant que fonctions de formatage de chaîne de caractères IntToStr ou Format; les autres fonctionnalités sont moins connues, car ce sont les variables globales des informations de version de Windows. Ceux-ci indiquent la plate-forme Windows (Windows 9x ou Windows NT, Windows 2000, Windows XP,...), la version et le numéro de construction du système d'exploitation et l'éventuel Service Pack installé sur Windows NT. Ils peuvent être utilisés de la manière suivante :

  1. Unit SysUtils;
  2.  
  3. BEGIN
  4.  Case Win32Platform of
  5.   VER_PLATFORM_WIN32s: ShowMessage('Noyau Win32s');
  6.   VER_PLATFORM_WIN32_WINDOWS: ShowMessage('Noyau Windows 9x : Windows 95, Windows 98, Windows Me');
  7.   VER_PLATFORM_WIN32_NT: ShowMessage('Noyau Windows NT : Windows 2000, Windows XP, Windows Vista, Windows 7,...');
  8.  End;
  9.  ShowMessage('Exécute Windows : ' + IntToStr (Win32MajorVersion) + '.' + IntToStr (Win32MinorVersion) + ' (Construction ' + IntToStr (Win32BuildNumber) + ') ' + #10#13 + 'Mise à jour : ' + Win32CSDVersion);
  10. End;

Une autre fonctionnalité peu connue, mais avec un nom assez long, est une classe prenant en charge le multi-processus léger : TMultiReadExclusiveWriteSynchronizer. Cette classe vous permet de travailler avec des ressources pouvant être utilisées par plusieurs processus léger en même temps pour la lecture (lecture multiple) mais doivent être utilisées par un seul processus léger lors de l'écriture (écriture exclusive). Cela signifie que l'écriture ne peut pas démarrer tant que tous les processus légers de lecture ne sont pas terminés.

Le synchroniseur multi-lecture est unique en ce qu'il prend en charge les verrous récursifs et la promotion des verrous de lecture en verrous d'écriture. L'objectif principal de la classe est de permettre à plusieurs processus légers d'accéder facilement et rapidement à la lecture à partir d'une ressource partagée, tout en permettant à un processus léger d'obtenir le contrôle exclusif de la ressource pour des mises à jour relativement peu fréquentes. Il existe d'autres classes de synchronisation dans Delphi, déclarées dans l'unité SyncObjs et étroitement associées aux objets de synchronisation du système d'exploitation (tels que les événements et les sections critiques de Windows).

A partir de Delphi 6, quelques nouvelles fonctions font leurs apparition dans l'unité SysUtils. L'un des nouveaux domaines concerne la conversion booléenne en chaîne de caractères. La fonction BoolToStr renvoie généralement «-1» et «0» pour les valeurs True et False. Si le deuxième paramètre facultatif est spécifié, la fonction renvoie la première chaîne de caractères dans les tableaux TrueBoolStrs et FalseBoolStrs (par défaut 'TRUE' et 'FALSE') :

  1. BoolToStr(True) { retourne '-1' }
  2. BoolToStr(False, True) { retournes 'FALSE' par défaut }

La fonction inverse est StrToBool, pouvant convertir une chaîne de caractères contenant l'une des valeurs de deux tableaux booléens mentionnés ci-dessus ou une valeur numérique. Dans ce dernier cas, le résultat sera True sauf si la valeur numérique est zéro. D'autres nouvelles fonctions de SysUtils concernent les conversions à virgule flottante en types de devises et de date et d'heure: FloatToCurr et FloatToDateTime peuvent être utilisés pour éviter une conversion de type explicite. Les fonctions TryStrToFloat et TryStrToCurr tentent de convertir une chaîne de caractères en une valeur à virgule flottante ou monétaire et renverront False en cas d'erreur au lieu de générer une exception (comme le font les fonctions classiques StrToFloat et StrToCurr).

Il existe une fonction AnsiDequotedStr, supprimant les guillemets d'une chaîne de caractères, correspondant à la fonction AnsiQuoteStr ajoutée dans Delphi 5. A partir de Delphi 6, il offre une prise en charge nettement améliorée des chaînes de caractères Unicode, avec une série de nouvelles routines, notamment WideUpperCase, WideLowerCase, WideCompareStr, WideSameStr, WideCompareText, WideSameText et WideFormat. Toutes ces fonctions fonctionnent comme leurs homologues AnsiString. Trois fonctions (TryStrToDate, TryEncodeDate et TryEncodeTime) tentent de convertir une chaîne de caractères en une date ou d'encoder une date ou une heure, sans lever d'exception, de la même manière que les fonctions Try précédemment mentionnées. En outre, la fonction DecodeDateFully renvoie des informations plus détaillées, telles que le jour de la semaine, et la fonction CurrentYear renvoie l'année de la date du jour. Il existe une version portable, conviviale et surchargée de la fonction GetEnvironmentVariable. Cette nouvelle version utilise des paramètres de chaîne de caractères au lieu de paramètres PChar et est nettement plus facile à utiliser :

  1. Function GetEnvironmentVariable(Name:String):String;

D'autres nouvelles fonctions concernent la prise en charge des interfaces. Deux nouvelles versions surchargées de la fonction Support peu connue vous permettent de vérifier si un objet ou une classe prend en charge une interface donnée. La fonction correspond au comportement de l'opérateur is pour les classes et est cartographiée à la méthode QueryInterface.

Il existe également une fonction IsEqualGUID et deux fonctions pour convertir des chaînes de caractères en GUID et vice versa. La fonction CreateGUID a également été déplacée vers SysUtils pour la rendre également disponible sous Linux (avec une mise en oeuvre personnalisée, bien sûr).

Enfin, à partir de Delphi 6, d'autres fonctions de compatibilité Linux ont été ajoutés. La fonction AdjustLineBreaks peut désormais effectuer différents types d'ajustements des séquences de retour chariot et de saut de ligne, ainsi que l'introduction de nouvelles variables globales pour les fichiers texte dans l'unité System. La fonction FileCreate a une version surchargée dans laquelle vous pouvez spécifier les droits d'accès aux fichiers à la manière Unix. La fonction ExpandFileName peut localiser des fichiers (sur des systèmes de fichiers sensibles à la casse) même lorsque leurs cas ne correspondent pas exactement. Les fonctions liées aux délimiteurs de chemin (barre oblique inverse ou barre oblique) ont été rendues plus génériques et renommées en conséquence. (Par exemple, la fonction IncludeTralingBackslash est désormais mieux connue sous le nom d'IncludingTrailingPathDelimiter.)



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Dimanche, le 3 janvier 2021