Ste se kdaj znali pisati isto kodo znova in znova, da bi znotraj nje opravili kakšno običajno nalogo upravljavci dogodkov? Da! Čas je, da se naučite o programih znotraj programa. Pozovimo te podprograme mini programov.
Uvod v podprograme
Podprogrami so pomemben del vseh programski jezik, inDelphi ni izjema. V Delfih na splošno obstajata dve vrsti podprogramov: funkcija in postopek. Običajna razlika med funkcijo in postopkom je ta, da funkcija lahko vrne vrednost, postopek pa na splošno tega ne stori. Funkcija se običajno imenuje kot del izraza.
Oglejte si naslednje primere:
postopek Reci živijo(konst sKaj:vrvica); začeti
ShowMessage ('Hello' + sWhat); konec; funkcijo Letakonst BirthYear: celo število): celo število; var
Leto, mesec, dan: Beseda; začeti
DecodeDate (datum, leto, mesec, dan); Rezultat: = leto - leto rojstva; konec;
Ko so podprogrami definirani, jih lahko pokličemo enkrat ali večkrat:
postopek TForm1.Button1Click (Pošiljatelj: TObject); začeti
SayHello ("Uporabnik Delphija");
konec; postopek TForm1.Button2Click (Pošiljatelj: TObject); začeti
SayHello ('Žarko Gajić'); ShowMessage ('Ti si' + IntToStr (YearsOld (1973)) + 'letnik!'); konec;
Funkcije in postopki
Kot vidimo, sta obe funkciji in postopki podobni mini programom. Zlasti lahko imajo v sebi svojo vrsto, konstante in spremenljive deklaracije.
Oglejte si podrobnejšo (različno) funkcijo SomeCalc:
funkcijo SomeCalc. (konst sStr: vrvica; konst iYear, iMonth: celo število; var iDay: celo število): boolean; začeti...konec;
Vsak postopek ali funkcijo se začne z a glava ki identificira postopek ali funkcijo in našteje seznam parametrov rutina uporablja, če obstaja. Parametri so navedeni v oklepajih. Vsak parameter ima identifikacijsko ime in običajno ima vrsto. Podpičje loči parametre na seznamu parametrov drug od drugega.
kličejo se sStr, iYear in iMonth stalni parametri. Stalne parametre ni mogoče spremeniti s funkcijo (ali postopkom). IDay je sprejet kot parameter parameter, in znotraj njega lahko naredimo spremembe.
Funkcije, ker vračajo vrednosti, morajo imeti a vrsta vrnitve razglašen na koncu glave. Vrnilno vrednost funkcije poda (končna) dodelitev njenemu imenu. Ker ima vsaka funkcija implicitno lokalno spremenljivko Rezultat iste vrste kot funkcije vrnejo vrednost, ima dodelitev rezultatu enak učinek kot dodelitev imenu funkcije.
Pozicioniranje in klicanje podprogramov
Podprogrami so vedno umeščeni v izvedbeni del enote. Takšne podprograme lahko pokliče (uporablja) upravljavec dogodkov ali podprogram v isti enoti, ki je določena za njim.
Opomba: klavzula uporabe enote pove, katere enote lahko pokliče. Če želimo, da določeno podprogramo v Unit1 uporabijo upravljavci dogodkov ali podprogrami v drugi enoti (recimo Unit2), moramo:
- Dodajte Unit1 k uporabni klavzuli Unit2
- Postavite kopijo glave podprograma v razdelek vmesnika Unit1.
To pomeni, da so podprogrami, katerih glave so podane v razdelku vmesnika globalni po obsegu.
Ko pokličemo funkcijo (ali postopek) znotraj lastne enote, uporabimo njeno ime s čim parametrov so potrebni. Če pokličemo globalni podprogram (definiran v neki drugi enoti, npr. MyUnit), uporabimo ime enote, ki mu sledi obdobje.
... // V tej enoti je določen postopek SayHello
SayHello ("Uporabnik Delphija"); // Funkcija YearsOld je definirana v enoti MyUnit
Tip: = MyUnit. YearsOld (1973);...
Opomba: funkcije ali postopki imajo lahko vgrajene lastne podprograme. Vdelana podprogram je lokalna za podprogram zabojnika in je ne more uporabljati v drugih delih programa. Nekaj kot:
postopek TForm1.Button1Click (Pošiljatelj: TObject); funkcijo IsSmall (konst sStr:vrvica): boolean; začeti// IsSmall vrne True, če je sStr v malih črkah, v nasprotnem primeru je napačno
Rezultat: = LowerCase (sStr) = sStr; konec; začeti// IsSmall je mogoče uporabljati samo znotraj dogodka Button1 OnClickče IsSmall (Edit1.Text) torej
ShowMessage ("Vse majhne kapice v programu Edit1.Text")
drugače
ShowMessage ('Niso vsi majhni pokrovčki v Edit1.Text'); konec;