Jeste li ikada zatekli da pišete isti kod iznova i iznova za obavljanje nekog uobičajenog zadatka nositelji događaja? Da! Vrijeme je da naučite o programima unutar programa. Nazovimo te podprograme mini programa.
Uvod u subroutine
Potprogrami su važan dio svih programski jezik, iDelphi nije izuzetak. U Delphiju općenito postoje dvije vrste podprograma: funkcija i postupak. Uobičajena razlika između funkcije i postupka je ta da funkcija može vratiti vrijednost, a postupak obično to ne čini. Funkcija se obično naziva dijelom izraza.
Pogledajte sljedeće primjere:
postupak Reci zdravo(const sWhat:niz); početi
ShowMessage ('Hello' + sWhat); kraj; funkcija YearsOld (const BirthYear: integer): cijeli broj; var
Godina, mjesec, dan: Riječ; početi
DecodeDate (datum, godina, mjesec, dan); Rezultat: = Godina - Godina rođenja; kraj;
Nakon što su podprogrami definirani, možemo ih nazvati jedan ili više puta:
postupak TForm1.Button1Click (Pošiljatelj: TObject); početi
SayHello ('Delphi korisnik'); kraj;
postupak TForm1.Button2Click (Pošiljatelj: TObject); početi
SayHello ('Žarko Gajić'); ShowMessage ('Imate' + IntToStr (YearsOld (1973)) + 'godina!'); kraj;
Funkcije i postupci
Kao što vidimo, i funkcije i postupci djeluju poput mini programa. Konkretno, oni mogu unutar sebe imati vlastiti tip, konstante i varijable.
Pogledajte detaljnije (neku drugu) funkciju SomeCalc:
funkcija SomeCalc. (const sStr: niz; const iYear, iMonth: cijeli broj; var iDay: cijeli broj): boolean; početi...kraj;
Svaki postupak ili funkcija započinje s Zaglavlje koja identificira postupak ili funkciju i navodi popis parametri rutina koristi ako ih ima. Parametri su navedeni u zagradama. Svaki parametar ima identifikacijsko ime i obično ima vrstu. Točka zarezom odvaja parametre na popisu parametara jedan od drugog.
Pozvani su sStr, iYear i iMonth stalni parametri. Konstantni parametri se ne mogu mijenjati funkcijom (ili postupkom). IDay se prenosi kao var parametar, i mi ga možemo unijeti u podprogramu.
Funkcije, budući da vraćaju vrijednosti, moraju imati a vrsta povratka proglašen na kraju zaglavlja. Povratna vrijednost funkcije dana je (konačnim) dodjelom njenom imenu. Budući da svaka funkcija implicitno ima lokalnu varijablu Rezultat iste vrste kao i funkcija vraća vrijednost, dodjeljivanje Result-u ima isti učinak kao i dodjeljivanje nazivu funkcije.
Pozicioniranje i pozivanje podprograma
Potprogrami su uvijek smješteni u odjeljku za implementaciju jedinice. Takve potprograme može pozvati (upotrijebiti) voditelj događaja ili podprogram u istoj jedinici koja je definirana nakon njega.
Napomena: upotreba klauzula jedinice govori vam koje jedinice može pozivati. Ako želimo da određeni podprogram u Unit1 mogu koristiti rukovoditelji događaja ili podprogrami u drugoj jedinici (recimo Unit2), moramo:
- Dodajte Unit1 klauzuli upotrebe Unit2
- Postavite kopiju zaglavlja podprograma u odjeljak sučelja Unit1.
To znači da su potprogrami čija su zaglavlja data u dijelu sučelja globalni po opsegu.
Kada nazovemo funkciju (ili postupak) unutar vlastite jedinice, koristimo njeno ime s bilo čim parametri su potrebni. S druge strane, ako nazovemo globalni potprogram (definiran u nekoj drugoj jedinici, npr. MyUnit), koristimo naziv jedinice nakon kojeg slijedi točka.
... // Postupak SayHello definiran je unutar ove jedinice
SayHello ('Delphi korisnik'); // Funkcija YearsOld definirana je unutar MyUnit jedinice
Lutka: = MyUnit. YearsOld (1973);...
Napomena: funkcije ili postupci mogu imati svoje podprograme ugrađene u njih. Ugrađeni podprogram lokalni je za podprogramu spremnika i ne može ga koristiti drugi dijelovi programa. Nešto kao:
postupak TForm1.Button1Click (Pošiljatelj: TObject); funkcija Je malo(const sStr:niz) Boolean; početi// IsSmall vraća True ako je sStr u malim, malim ili False
Rezultat: = LowerCase (sStr) = sStr; kraj; početi// IsSmall može se koristiti samo unutar događaja Button1 OnClickako IsSmall (Edit1.Text) zatim
ShowMessage ("Sve male kape u Edit1.Text")
drugo
ShowMessage ('Nisu sve male kape u Edit1.Text'); kraj;