Hogyan kell használni a funkciókat és eljárásokat a Delphi-ben

Találtál már valaha ugyanazt a kódot, amikor újra és újra megírt, hogy elvégezzen egy általános feladatot belül eseménykezelők? Igen! Itt az ideje, hogy megismerje a programokon belüli programokat. Hívjuk azokat a mini-programokat szubrutinoknak.

Bevezetés az alprogramokba

Az alprogramok mindenki fontos részét képezik programozási nyelvésDelphi sem kivétel. A Delphi-ben általában kétféle szubrutin van: egy függvény és egy eljárás. A függvény és az eljárás közötti szokásos különbség az, hogy egy függvény visszatérhet értéket, és az eljárás általában nem fog megtenni. Egy függvényt általában kifejezés részeként hívnak.

Vessen egy pillantást a következő példákra:

eljárás Köszönj(const sWhat:húr); kezdődik
ShowMessage ('Hello' + sWhat); vég; funkció Éves(const Születési év: egész): egész; var
Év, hónap, nap: szó; kezdődik
DecodeDate (dátum, év, hónap, nap); Eredmény: = Év - Születési év; vég; 

Miután az alprogramok meghatározásra kerültek, egy vagy többször is felhívhatjuk őket:

eljárás TForm1.Button1Click (Feladó: TObject); 
instagram viewer
kezdődik SayHello ('Delphi felhasználó'); vég; eljárás TForm1.Button2Click (Feladó: TObject); kezdődik SayHello ('Zarko Gajic'); ShowMessage ('Te vagy' + IntToStr (YearsOld (1973)) + 'éves!'); vég;

Funkciók és eljárások

Mint láthatjuk, mind a funkciók, mind az eljárások úgy működnek, mint a mini-programok. Különösen saját típusuk, állandóságaik és változó deklarációik lehetnek bennük.

Nézzen közelebbről a (vegyes) SomeCalc funkcióhoz:

funkció SomeCalc. (const SSTR: húr; const iYear, iMonth: egész szám; var iDay: egész): logikai; kezdődik...vég; 

Minden eljárás vagy funkció a-val kezdődik fejléc amely azonosítja az eljárást vagy funkciót és felsorolja a paraméterek a rutin használja, ha van ilyen. A paraméterek zárójelben vannak felsorolva. Minden paraméter azonosító névvel rendelkezik, és általában egyfajta. Egy pontosvessző elválasztja a paraméterek listájában szereplő paramétereket egymástól.

Az sStr, iYear és iMonth nevezzük állandó paraméterek. Az állandó paramétereket a funkció (vagy az eljárás) nem változtathatja meg. Az iDay átadása a var paraméter, és változtathatunk benne, az alprogramban.

Mivel a függvények visszatérnek az értékekhez, rendelkezniük kell a visszatérés típusa a fejléc végén jelenik meg. A függvény visszatérési értékét a (végleges) hozzárendelés adja meg a nevéhez. Mivel minden függvénynek implicit módon van egy Eredményének helyi változója, amely ugyanolyan típusú, mint a függvények visszatérési értéke, az eredményhez való hozzárendelés ugyanolyan hatású, mint a függvény nevéhez való hozzárendelés.

Az alprogramok pozicionálása és felhívása

Az alprogramok mindig az egység megvalósítási szakaszában vannak. Az ilyen szubrutinokat eseménykezelő vagy szubrutin hívhatja (használhatja) ugyanabban az egységben, amely utána van meghatározva.

Megjegyzés: az egység használati záradéka megmondja, mely egységeket hívhatja. Ha azt szeretnénk, ha az 1. egység egy speciális szubrutinja az eseménykezelők vagy egy másik egység szubrutinjai (például a 2. egység) számára használható, akkor:

  • Adja hozzá az 1. egységet a 2. egység használati záradékához
  • Helyezze a szubrutin fejlécének másolatát az Unit1 interfész szakaszába.

Ez azt jelenti, hogy azok az alprogramok, amelyek fejléceit az interfész szakaszban adják meg globális hatályú.

Amikor egy függvényt (vagy eljárást) hívunk meg a saját egységén belül, a nevét bármivel használjuk paraméterek szükségesek. Másrészt, ha globális szubrutinot hívunk (amelyet egy másik egységben definiálunk, például a MyUnit), akkor az egység nevét, majd egy periódust használjuk.

... // A SayHello eljárás ebben az egységben van meghatározva
SayHello ('Delphi felhasználó'); // Az YearsOld függvény a MyUnit egységben van meghatározva
Dummy: = MyUnit. YearsOld (1973);... 

Megjegyzés: a funkciók vagy eljárások beágyazhatók saját alprogramokba. A beágyazott szubrutin lokalizálódik a konténer szubrutinjában, és a program más részei nem használhatják azt. Valami hasonló:

eljárás TForm1.Button1Click (Feladó: TObject); funkció Kicsi(const SSTR:húr): Logikai; kezdődik// Az IsSmall True értéket ad vissza, ha az sStr kisbetűkkel van, hamis másképp
Eredmény: = LowerCase (sStr) = sStr; vég; kezdődik// Az IsSmall csak a Button1 OnClick eseményen belül használhatóha IsSmall (Szerkesztés1.szöveg) azután
ShowMessage ('Minden kis sapka az Edit1.Textben')
más
ShowMessage ('Az Edit1.Text nem minden kisbetűvel rendelkezik'); vég;