Funktsioonide ja protseduuride kasutamine Delfis

click fraud protection

Kas olete kunagi leidnud, et kirjutate ikka ja jälle sama koodi, et täita mõnda ühist ülesannet ürituste käitlejad? Jah! On aeg õppida tundma programmi sisemisi programme. Nimetagem neid miniprogramme alamprogrammideks.

Sissejuhatus alamprogrammidesse

Alamprogrammid on kõigi osa oluline osa programmeerimiskeeljaDelphi pole erand. Delphis on tavaliselt kahte tüüpi alamprogramme: funktsioon ja protseduur. Tavaline erinevus funktsiooni ja protseduuri vahel on see, et funktsioon võib väärtuse tagastada ja protseduur seda tavaliselt ei tee. Funktsiooni nimetatakse tavaliselt avaldise osaks.

Vaadake järgmisi näiteid:

protseduur Ütle Tere(const sMida:nöör); alustada
ShowMessage ('Tere' + sWhat); lõpp; funktsiooni Aastat vana(const Sünniaasta: täisarv): täisarv; var
Aasta, kuu, päev: sõna; alustada
DecodeDate (kuupäev, aasta, kuu, päev); Tulemus: = aasta - sünniaasta; lõpp; 

Kui alamprogrammid on määratletud, võime neile helistada üks või mitu korda:

protseduur TForm1.Button1Click (saatja: TObject); 
instagram viewer
alustada SayHello ('Delphi kasutaja'); lõpp; protseduur TForm1.Button2Click (saatja: TObject); alustada SayHello ('Zarko Gajic'); ShowMessage ('Oled' + IntToStr (YearsOld (1973)) + 'aastane!'); lõpp;

Funktsioonid ja protseduurid

Nagu näeme, toimivad mõlemad funktsioonid ja protseduurid nagu miniprogrammid. Eelkõige võib neil olla oma tüüp, konstandid ja muutuvdeklaratsioonid.

Vaadake (mitmesugust) funktsiooni SomeCalc lähemalt:

funktsiooni SomeCalc. (const sStr: nöör; const iYear, iMonth: täisarv; var iDay: täisarv): loogiline; alustada...lõpp; 

Iga protseduur või funktsioon algab tähega päis mis identifitseerib protseduuri või funktsiooni ja loetleb parameetrid rutiin kasutab, kui seda on. Parameetrid on toodud sulgudes. Igal parameetril on identifitseeriv nimi ja tavaliselt on see tüüp. Semikoolon eraldab parameetrite loendis olevad parameetrid üksteisest.

sStr, iYear ja iMonth kutsutakse konstantsed parameetrid. Püsivaid parameetreid funktsioon (või protseduur) muuta ei saa. IDay antakse edasi a-na var parameeterja saame selles muudatusi teha alamprogrammis.

Kuna funktsioonid tagastavad väärtused, peab neil olema a tagastamise tüüp kuulutatakse päise lõpus. Funktsiooni tagasiväärtuse annab (lõplik) omistamine selle nimele. Kuna igal funktsioonil on vaikimisi lokaalne muutuja Tulemus, mis on sama tüüpi kui funktsioonide väärtus, on tulemusele omistamisel sama mõju kui funktsiooni nimele omistamisel.

Alamprogrammide positsioneerimine ja neile helistamine

Alamprogrammid paigutatakse alati üksuse rakenduse sektsiooni. Selliseid alamprogramme võib sündmuste käitleja nimetada (kasutada) samas üksuses, mis pärast seda on määratletud.

Märkus: üksuse kasutusklausel ütleb teile, millistele üksustele see võib helistada. Kui soovime, et üksuse 1 konkreetne alamprogramm oleks kasutatav sündmusekäitlejate või teise üksuse (näiteks üksuse2) alamprogrammide poolt, peame tegema järgmist:

  • Lisage üksus1 üksuse2 kasutusklauslile
  • Asetage alamprogrammi päise koopia Unit1 liidese sektsiooni.

See tähendab, et alamprogrammid, mille päised on antud liidese jaotises, on globaalse ulatusega.

Kui kutsume funktsiooni (või protseduuri) oma üksuses, kasutame selle nime ükskõik millisega parameetrid on vajalikud. Teisest küljest, kui me nimetame globaalset alamprogrammi (määratletud mõnes muus ühikus, nt MyUnit), siis kasutame ühiku nime, millele järgneb periood.

... // SayHello protseduur on selles seadmes määratletud
SayHello ('Delphi kasutaja'); // Funktsioon YearsOld on määratletud MyUnit üksuses
Mannekeen: = MyUnit. Aastad Vanad (1973);... 

Märkus. Funktsioonidel või protseduuridel võib olla manustatud oma alamprogramme. Manustatud alamprogramm on lokaalne konteineri alamprogrammiga ja seda ei saa programmi teistes osades kasutada. Midagi sellist:

protseduur TForm1.Button1Click (saatja: TObject); funktsiooni On väike(const sStr:nöör): loogiline; alustada// IsSmall tagastab True, kui sStr on väiketähtedega, False vastasel juhul
Tulemus: = LowerCase (sStr) = sStr; lõpp; alustada// IsSmall saab kasutada ainult Button1 OnClicki sündmuse seeskui IsSmall (Redigeerimine1.teksti) siis
ShowMessage ('Redigeerimise1.teksti kõik väikesed tähed')
muud
ShowMessage ('Redigeerimise tekstis pole kõik väikesed tähed'); lõpp;
instagram story viewer