Iako poglavlje nosi naslov 'Funkcije',
a u poglavlju 'Procedure' je već bilo govora o jedinicama, ipak je ovo pravi
trenutak da se dublje pozabavimo njima.
Naime, ako opet pogledamo kako to izgleda jedan Unit,
primjećujemo rezervisanu ( podebljanu ) riječ uses. Nakon nje slijedi
spisak svih jedinica koje koristi vaš projekt. To su posebne jedinice koje
nemaju svoj prozor, već samo sadržavaju određene funkcije. Tako, recimo, Math
unit sadrži mnoge matematičke funkcije, neke i vrlo važne, kojih nema u
Delphiju. Uzmimo primjer funkcije
Power(Base: Extended; Exponent: Extended): Extended.
Ova funkcija izračunava xy. Recimo da želimo izračunati 733
i tu vrijednost dodijeliti promjenljivoj a, pa pišemo:
a := Power(7, 33);
Primjećujemo da je kao baza uneseno 7, a kao eksponent 33. Sve u svemu vrlo
jednostavno.
Međutim, da smo htjeli sami da definišemo takvu funkciju morali bismo raditi sljedeće:
Dakle, funkcije se
definišu tako što se nakon imena
u zagradu upisuju promjenljive koje definiše korisnik, a nakon zagrade tip koji
funkcija vraća. U gornjem primjeru to je Integer, najčešći tip brojevnih
promjenljivih.
Ovako se piše funkcija za jednokratnu upotrebu. Ali ako
želimo da napišemo jednu ili više funkcija koje možemo koristiti u svim
projektima, definišemo funkcije kao public, a unit čuvamo kao poseban, bez
prozora. U projektima u kojima želimo da upotrebimo taj unit, u gore pominjanu
listu uses dodajemo i ime tog unita ( ako je sačuvan pod imenom MyUnit,
pišemo upravo MyUnit ). Isto važi i za jedinice koje nisu već
navedene ( Delphi
smatra samo određene jedinice za default i kao takve ih ispisuje automatski,
ali onih koje ne spadaju u takve ima puno više. One dolaze sa Delphijem. Takve
su recimo Math, Chart, Db... ).
Očigledno je da su funkcije veoma slične procedurama. Ustvari, jedina razlika je što funkcije daju neku povratnu vrijednost, a procedure samo obavljaju određene radnje, te se može reći da su funkcije proširene procedure.
JEDNA VRLO VAŽNA PROCEDURA:
FormIme.Show;
( FormIme je ime prozora koji želimo otvoriti )
Ova procedura je specifična po tome što se u jedinicu prozora
iz kojeg želimo otvoriti prozor treba unijeti sljedeći kod:
uses UnitIme;
( UnitIme je ime jedinice prozora koji želimo otvoriti )
Međutim, za razliku od gore pominjanih jedinica, ovaj kod se unosi, kao i
procedure i funkcije, između rezervisane riječi implementation
i {$R *.DFM}.