Ar kada nors pastebėjote, kad vėl ir vėl rašote tą patį kodą, kad atliktumėte kokią nors bendrą užduotį renginių vedėjai? Taip! Atėjo laikas sužinoti apie programos programas. Pavadinkime tas mini programas paprogramėmis.
Įvadas į paprogrames
Paprogramės yra svarbi bet kurio dalyko dalis programavimo kalbairDelfi nėra išimtis. Delfuose paprastai yra dviejų tipų paprogramės: funkcija ir procedūra. Įprastas funkcijos ir procedūros skirtumas yra tas, kad funkcija gali grąžinti reikšmę, o procedūra paprastai to nepadarys. Funkcija paprastai vadinama išraiškos dalimi.
Pažvelkite į šiuos pavyzdžius:
procedūra Sakyk labas(const sKas:stygos); prasideda
„ShowMessage“ („Sveiki“ + „Ką daryti“); galas; funkcija Metų(const Gimimo metai: sveikas skaičius): sveikas skaičius; var
Metai, mėnuo, diena: žodis; prasideda
„DecodeDate“ (data, metai, mėnuo, diena); Rezultatas: = Metai - gimimo metai; galas;
Kai bus apibrėžtos paprogramės, galėsime jomis paskambinti vieną ar kelis kartus:
procedūra TForm1.Button1Click (Siuntėjas: TObject);
prasideda
„SayHello“ („Delphi“ vartotojas); galas; procedūra TForm1.Button2Click (Siuntėjas: TObject); prasideda
„SayHello“ (‘Zarko Gajic’); „ShowMessage“ ('Tu esi' + IntToStr (YearsOld (1973)) + 'metų!'); galas;
Funkcijos ir procedūros
Kaip matome, tiek funkcijos, tiek procedūros veikia kaip mini programos. Visų pirma, jie gali turėti savo tipą, konstantas ir kintamąsias deklaracijas.
Atidžiau pažvelkite į (įvairią) „SomeCalc“ funkciją:
funkcija „SomeCalc“. (const sStr: stygos; const „iYear“, „iMonth“: sveikasis skaičius; var „iDay“: sveikasis skaičius): boolean; prasideda...galas;
Kiekviena procedūra ar funkcija prasideda a antraštė kuris nustato procedūrą ar funkciją ir išvardija parametrus rutina naudojama, jei tokių yra. Parametrai yra išvardyti skliaustuose. Kiekvienas parametras turi identifikuojantį pavadinimą ir paprastai turi tipą. Kabelis išskiria parametrų sąrašo parametrus vienas nuo kito.
sStr, iYear ir iMonth yra vadinami pastovūs parametrai. Pastovių parametrų negali pakeisti funkcija (ar procedūra). „IDay“ perduodama kaip var parametras, ir mes galime jį pakeisti, paprogramės viduje.
Funkcijos, nes jos grąžina reikšmes, privalo turėti a grąžinimo tipas skelbiama antraštės gale. Funkcijos grąžinamoji vertė suteikiama (galutinė) priskyrimas jos pavadinimui. Kadangi kiekviena funkcija netiesiogiai turi to paties tipo vietinį kintamąjį Rezultatas, kaip ir funkcijos grąžinimo reikšmė, priskyrimas rezultatui turi tą patį poveikį kaip priskyrimas funkcijos pavadinimui.
Paprogramų nustatymas ir skambinimas
Paprogramos visada dedamos į įrenginio skyrių. Tokias paprogrames gali vadinti (naudoti) įvykių tvarkytojas arba paprogramė tame pačiame vienete, kuris yra apibrėžtas po jo.
Pastaba: vieneto naudojimo sąlyga nurodo, kuriais vienetais jis gali skambinti. Jei norime, kad konkrečią 1 pakopos paprogramę galėtų naudoti renginių tvarkytojai arba kito padalinio paprogramės (tarkime, 2 blokas), turime:
- Pridėkite1 bloką prie 2 skyriaus naudojimo sąlygos
- Įdėkite paprogramės antraštės kopiją į „Unit1“ sąsajos skyrių.
Tai reiškia, kad paprogramės, kurių antraštės pateiktos sąsajos skyriuje, yra globaliu mastu.
Kai mes vadiname funkciją (ar procedūrą) savo bloke, mes naudojame jos pavadinimą su bet kuo parametrus yra reikalingi. Kita vertus, jei mes vadiname globalią paprogramę (apibrėžtą kitame vienete, pvz., „MyUnit“), mes naudojame vieneto pavadinimą, po kurio eina taškas.
... // „SayHello“ procedūra apibrėžta šio įrenginio viduje
„SayHello“ („Delphi“ vartotojas); // „YearsOld“ funkcija yra apibrėžta „MyUnit“ vienete
Manekenė: = „MyUnit“. „YearOld“ (1973 m.);...
Pastaba: funkcijos ar procedūros gali turėti savo paprogrames. Įdėta paprogramė yra lokalioji konteinerio paprogramė ir negali būti naudojama kitose programos dalyse. Kažkas kaip:
procedūra TForm1.Button1Click (Siuntėjas: TObject); funkcija Yra mažas(const sStr:stygos): boolean; prasideda// IsSmall grąžina True, jei sStr yra mažosiomis raidėmis, False kitaip
Rezultatas: = LowerCase (sStr) = sStr; galas; prasideda// „IsSmall“ gali būti naudojamas tik „Button1 OnClick“ įvykio vidujejei „IsSmall“ („Edit1.Text“) tada
„ShowMessage“ („Visi maži didžiosios raidės„ Edit1.Text “)
Kitas
ShowMessage ('Ne visos mažos raidės „Edit1.Text“); galas;