Vai esat kādreiz pamanījis, ka rakstāt vienu un to pašu kodu atkal un atkal, lai izpildītu kādu kopīgu uzdevumu pasākumu apstrādātāji? Jā! Jums ir pienācis laiks uzzināt par programmām programmas ietvaros. Sauksim tās par mini programmām pakārtotām programmām.
Ievads apakšprogrammās
Pamatprogrammas ir svarīga jebkura sastāvdaļa programmēšanas valoda, unDelfi nav izņēmums. Delfā parasti pastāv divu veidu apakšprogrammas: funkcija un procedūra. Parasti atšķirība starp funkciju un procedūru ir tāda, ka funkcija var atgriezt vērtību, un procedūra parasti to nedarīs. Funkciju parasti sauc par izteiksmes daļu.
Apskatiet šādus piemērus:
procedūra Pasaki Sveiki(const sKas:virkne); sākt
ShowMessage ('Sveiki' + sWhat); beigas; funkcija Gadus vecs(const Dzimšanas gads: vesels skaitlis): vesels skaitlis; var
Gads, mēnesis, diena: Vārds; sākt
DecodeDate (datums, gads, mēnesis, diena); Rezultāts: = gads - dzimšanas gads; beigas;
Kad ir noteiktas apakšprogrammas, mēs tās varam sazvanīt vienu vai vairākas reizes:
procedūra TForm1.Button1Click (Sūtītājs: TObject); sākt
SayHello ('Delphi lietotājs'); beigas; procedūra TForm1.Button2Click (Sūtītājs: TObject); sākt
SayHello ('Zarko Gajic'); ShowMessage ('Tu esi' + IntToStr (YearsOld (1973)) + 'gadus vecs!'); beigas;
Funkcijas un procedūras
Kā redzam, gan funkcijas, gan procedūras darbojas kā mini programmas. Jo īpaši tiem var būt savs tips, konstantes un mainīgas deklarācijas.
Sīkāk apskatiet (dažādu) funkciju SomeCalc:
funkcija DažiCalc. (const sStr: virkne; const iYear, iMonth: vesels skaitlis; var iDay: vesels skaitlis): Būla; sākt...beigas;
Katra procedūra vai funkcija sākas ar galvenes kas identificē procedūru vai funkciju un uzskaita parametriem rutīna izmanto, ja tāda ir. Parametri ir uzskaitīti iekavās. Katram parametram ir identificējošs nosaukums, un tam parasti ir tips. Ar semikolu atdala parametrus parametru sarakstā.
Tiek saukti sStr, iYear un iMonth nemainīgi parametri. Pastāvīgos parametrus nevar mainīt ar funkciju (vai procedūru). IDay tiek nodots kā var parametrs, un mēs to varam mainīt apakšprogrammā.
Funkcijām, jo tās atgriež vērtības, jābūt a atgriešanās tips deklarēts galvenes beigās. Funkcijas atgriešanās vērtību piešķir (galīgais) piešķīrums tās nosaukumam. Tā kā katrai funkcijai netieši ir tāds pats vietējais mainīgais Rezultāts, kāda ir funkcijas atgriešanās vērtībai, piešķirot rezultātam, ir tāds pats efekts kā piešķiršanai funkcijas nosaukumam.
Pamatprogrammu pozicionēšana un izsaukšana
Apakšprogrammas vienmēr tiek novietotas vienības ieviešanas sadaļā. Šādas apakšprogrammas var izsaukt (izmantot) notikumu apstrādātājs vai apakšprogramma tajā pašā vienībā, kas ir definēta pēc tās.
Piezīme: vienības lietošanas klauzula jums norāda, kuras vienības tā var piezvanīt. Ja mēs vēlamies, lai īpaša 1. apakšprogramma būtu izmantojama notikumu apstrādātājiem vai citas vienības (piemēram, 2. vienības) apakšprogrammām, mums:
- Pievienojiet 1. vienību 2. vienības lietošanas klauzulai
- Ievietojiet apakšprogrammas galvenes kopiju Unit1 interfeisa sadaļā.
Tas nozīmē, ka ir tādas apakšprogrammas, kuru galvenes ir norādītas interfeisa sadaļā globāla mēroga.
Kad mēs izsaucam funkciju (vai procedūru) tās pašas vienības iekšienē, mēs tās vārdu lietojam ar jebko parametriem ir nepieciešami. No otras puses, ja mēs saucam par globālo apakšprogrammu (definēta kādā citā vienībā, piemēram, MyUnit), mēs izmantojam vienības nosaukumu, kam seko periods.
... // SayHello procedūra ir definēta šīs vienības iekšpusē
SayHello ('Delphi lietotājs'); // Funkcija YearsOld ir definēta MyUnit vienībā
Manekens: = MyUnit. GadosVecs (1973);...
Piezīme: funkcijām vai procedūrām tajās var būt iegultas savas apakšprogrammas. Iegultā apakšprogramma ir lokāla konteinera apakšprogrammā, un to nevar izmantot citās programmas daļās. Kaut kas kā:
procedūra TForm1.Button1Click (Sūtītājs: TObject); funkcija IsSmall (const sStr:virkne): Būla; sākt// IsSmall atgriež True, ja sStr ir ar mazajiem burtiem, False citādi
Rezultāts: = LowerCase (sStr) = sStr; beigas; sākt// IsSmall var izmantot tikai Button1 OnClick pasākuma iekšienēja IsSmall (1. rediģēšanas teksts) tad
ShowMessage ('Visi mazie burti tekstā Edit1.Text')
cits
ShowMessage ('Ne visi mazie burti ir Edit1.Text'); beigas;