Comprendre et utiliser les fonctions et les procédures

Vous êtes-vous déjà retrouvé à écrire le même code encore et encore pour effectuer une tâche courante dans les gestionnaires d'événements? Oui! Il est temps pour vous d'en apprendre davantage sur les programmes d'un programme. Appelons ces sous-programmes de mini-programmes.

Introduction aux sous-programmes

Les sous-programmes sont une partie importante de tout langage de programmation, et Delphi ne fait pas exception. Dans Delphi, il existe généralement deux types de sous-programmes: une fonction et une procédure. La différence habituelle entre une fonction et une procédure est qu'une fonction peut renvoyer une valeur et qu'une procédure ne le fera généralement pas. Une fonction est normalement appelée en tant que partie d'une expression.

Jetez un œil aux exemples suivants:

 procédure Dis bonjour(const sQuoi:chaîne); commencer ShowMessage ('Bonjour' + sWhat); fin; une fonction Ans(const BirthYear: entier): entier; var Année, mois, jour: Word; commencer DecodeDate (date, année, mois, jour); Résultat: = Year - BirthYear; fin; 

Une fois les sous-programmes définis, nous pouvons les appeler une ou plusieurs fois:

 procédure TForm1.Button1Click (expéditeur: TObject); commencer SayHello («Utilisateur Delphi»); fin; procédure TForm1.Button2Click (expéditeur: TObject); commencer SayHello («Zarko Gajic»); ShowMessage ('Vous êtes' + IntToStr (YearsOld (1973)) + 'ans!'); fin; 

Fonctions et procédures

Comme nous pouvons le voir, les fonctions et les procédures agissent comme des mini-programmes. En particulier, ils peuvent avoir leur propre type, constantes et déclarations de variables à l'intérieur.

Examinez de plus près une fonction (divers) de SomeCalc:

 une fonction SomeCalc (const sStr: chaîne; const iYear, iMonth: entier; var iDay: entier): booléen; commencer  fin; 

Chaque procédure ou fonction commence par un entête qui identifie la procédure ou la fonction et répertorie les paramètres la routine utilise le cas échéant. Les paramètres sont répertoriés entre parenthèses. Chaque paramètre a un nom identifiant et a généralement un type. Un point-virgule sépare les paramètres d'une liste de paramètres les uns des autres.

sStr, iYear et iMonth sont appelés paramètres constants. Les paramètres constants ne peuvent pas être modifiés par la fonction (ou la procédure). L'iDay est passé en tant que paramètre var, et nous pouvons y apporter des modifications, à l'intérieur du sous-programme.

Les fonctions, puisqu'elles renvoient des valeurs, doivent avoir un type de retour déclaré à la fin de l'en-tête. La valeur de retour d'une fonction est donnée par l'affectation (finale) à son nom. Étant donné que chaque fonction a implicitement une variable locale Result du même type que la valeur de retour des fonctions, l'attribution à Result a le même effet que l'attribution au nom de la fonction.

Positionnement et appel de sous-programmes

Les sous-programmes sont toujours placés dans la section de mise en œuvre de l'unité. Ces sous-programmes peuvent être appelés (utilisés) par un gestionnaire d'événements ou un sous-programme dans la même unité que celle définie après.

Remarque: la clause uses d'une unité vous indique quelles unités elle peut appeler. Si nous voulons qu'un sous-programme spécifique dans une unité1 soit utilisable par les gestionnaires d'événements ou des sous-programmes dans une autre unité (disons unité2), nous devons:

  • Ajoutez Unit1 à la clause uses de Unit2
  • Placez une copie de l'en-tête du sous-programme dans la section interface de l'Unité1.