Förstå och använda funktioner och procedurer

Har du någonsin hittat dig själv skriva samma kod om och om igen för att utföra några vanliga uppgifter inom evenemangshanterare? ja! Det är dags för dig att lära dig om program inom ett program. Låt oss kalla dessa miniprograms subutrustningar.

Introduktion till subroutiner

Subroutiner är en viktig del av alla programmeringsspråk, och Delphi är inget undantag. I Delphi finns det i allmänhet två typer av subroutiner: en funktion och en procedur. Den vanliga skillnaden mellan en funktion och en procedur är att en funktion kan returnera ett värde, och en procedur kommer i allmänhet inte att göra det. En funktion kallas normalt som en del av ett uttryck.

Titta på följande exempel:

 procedur Säg hej(const sWHAT:sträng); Börja ShowMessage ('Hej' + sWhat); slutet; fungera År gammal(const Födelseår: heltal): heltal; var År, månad, dag: Word; Börja DecodeDate (Datum, år, månad, dag); Resultat: = År - Födelseår; slutet; 

När subroutiner har definierats kan vi kalla dem en eller flera gånger:

 procedur TForm1.Button1Click (avsändare: TObject); Börja SayHello ('Delphi-användare'); slutet; procedur TForm1.Button2Click (avsändare: TObject); Börja SayHello ('Zarko Gajic'); ShowMessage ('Du är' + IntToStr (YearsOld (1973)) + 'år gammal!'); slutet; 

Funktioner och procedurer

Som vi ser fungerar både funktioner och procedurer som miniprogram. I synnerhet kan de ha sin egen typ, konstanter och variabla förklaringar inuti sig.

Titta närmare på en (diverse) SomeCalc-funktion:

 fungera SomeCalc (const SSTR: sträng; const iYear, iMonth: heltal; var iDay: heltal): boolean; Börja ...  slutet; 

Varje procedur eller funktion börjar med a rubrik som identifierar proceduren eller funktionen och visar listan parametrar rutinen använder om någon. Parametrarna listas inom parentes. Varje parameter har ett identifierande namn och har vanligtvis en typ. En semikolon skiljer parametrar i en parameterlista från varandra.

sStr, iYear och iMonth kallas konstanta parametrar. Konstanta parametrar kan inte ändras med funktionen (eller proceduren). IDay skickas som en var parameter, och vi kan göra förändringar i det, i subrutinen.

Funktioner, eftersom de returnerar värden, måste ha en returtyp deklareras i slutet av rubriken. Returvärdet för en funktion ges av den (slutliga) tilldelningen till dess namn. Eftersom varje funktion implicit har en lokal variabel Resultat av samma typ som funktionerna returnerar värde har tilldelning till resultat samma effekt som tilldelning till namnet på funktionen.

Positionering och uppringning av subroutiner

Subroutiner placeras alltid i enhetens implementeringsdel. Sådana subroutiner kan kallas (används) av en händelseshanterare eller subroutine i samma enhet som definieras efter det.

Obs! Användningsklausulen för en enhet berättar vilka enheter den kan ringa. Om vi ​​vill att en specifik subroutine i en enhet1 ska kunna användas av händelseshanterarna eller subroutinerna i en annan enhet (säg enhet2), måste vi:

  • Lägg till Unit1 till användningsklausulen i Unit2
  • Placera en kopia av rubriken på underrutinen i gränssnittsavsnittet för enheten1.