Како се користе функције и процедуре у Делфи

Да ли сте се икада нашли да пишете исти код поново и поново да бисте извршили неки уобичајени задатак у себи руковаоци догађајима? Да! Вријеме је да научите о програмима у оквиру програма. Назовимо те подпрограме мини програма.

Увод у подпрограме

Подпрограми су важан дио било којег програмски језик, иДелпхи није изузетак. У Делфима углавном постоје две врсте подпрограма: функција и процедура. Уобичајена разлика између функције и поступка је та што функција може да врати вредност, а поступак обично то не чини. Функција се обично назива дијелом израза.

Погледајте следеће примере:

процедура Кажи Здраво(цонст сШта:низ); започети
СховМессаге ('Здраво' + сШта); крај; функција Година стар(цонст БиртхИеар: интегер): цео број; вар
Година, месец, дан: Реч; започети
ДецодеДате (датум, година, месец, дан); Резултат: = Година - Година рођења; крај; 

Након што су подпрограми дефинисани, можемо их назвати један или више пута:

процедура ТФорм1.Буттон1Цлицк (Пошиљалац: ТОбјецт); започети
СаиХелло ('Делпхи корисник'); 
instagram viewer
крај; процедура ТФорм1.Буттон2Цлицк (Пошиљалац: ТОбјецт); започети СаиХелло ('Жарко Гајић'); СховМессаге ('Ти си' + ИнтТоСтр (ИеарсОлд (1973)) + 'година стар!'); крај;

Функције и поступци

Као што видимо, и функције и процедуре дјелују као мини програми. Особито могу имати властити тип, константе и променљиве декларације у себи.

Погледајте детаљније (неку другу) функцију СомеЦалц:

функција СомеЦалц. (цонст сСтр: низ; цонст иИеар, иМонтх: цели број; вар иДаи: интегер): боолеан; започети...крај; 

Сваки поступак или функција започињу с хеадер која идентификује поступак или функцију и наводи листу параметри рутина користи ако их има. Параметри су наведени у заградама. Сваки параметар има идентификационо име и обично има тип. Точка са зарезом раздваја параметре у листи параметара један од другог.

сСтр, иИеар и иМонтх се зову стални параметри. Константни параметри се не могу мењати функцијом (или процедуром). ИДаи се преноси као вар параметар, и можемо да извршимо промене у њему, унутар подпрограма.

Функције, пошто враћају вредности, морају имати а врста повратка проглашен на крају заглавља. Повратна вриједност функције је дата (коначним) додјелом њеном имену. Будући да свака функција имплицитно има локалну променљиву Резултат истог типа као и функција враћа вредност, додељивање резултату има исти ефекат као и додељивање име функцији.

Позиционирање и позивање потпрограма

Подпрограми су увек смештени у делу за имплементацију јединице. Такве потпрограме може позвати (користити) руковалац догађајем или подпрограм у истој јединици која је дефинисана након њега.

Напомена: употребна клаузула јединице каже вам које јединице може да позива. Ако желимо да одређени потпрограм у Унит1 користи од стране обрађивача догађаја или подпрограма у другој јединици (рецимо Унит2), морамо:

  • Додајте Унит1 клаузули употребе Унит2
  • Поставите копију заглавља подпрограма у одељак интерфејса Унит1.

То значи да су потпрограми чија су заглавља дата у одељку интерфејса глобални по обиму.

Када назовемо функцију (или поступак) унутар сопствене јединице, користимо њено име са било чим параметри Потребни су. С друге стране, ако назовемо глобалну подпрограму (дефинисану у некој другој јединици, нпр. МиУнит), користимо назив јединице после којег следи тачка.

... // Поступак СаиХелло је дефинисан унутар ове јединице
СаиХелло ('Делпхи корисник'); // Функција ИеарсОлд је дефинисана унутар МиУнит јединице
Думми: = МиУнит. ИеарсОлд (1973);... 

Напомена: функције или процедуре могу имати своје подпрограме уграђене у њих. Уграђена подпрограм је локална за подпрограм контејнера и не могу је користити други делови програма. Нешто слично:

процедура ТФорм1.Буттон1Цлицк (Пошиљалац: ТОбјецт); функција Мала(цонст сСтр:низ): боолеан; започети// ИсСмалл враћа Труе ако је сСтр у малим словима, у супротном погрешно
Резултат: = ЛоверЦасе (сСтр) = сСтр; крај; започети// ИсСмалл може користити само унутар Буттон1 ОнЦлицк догађајаако ИсСмалл (Едит1.Тект) онда
СховМессаге ('Све мале капице у Едит1.Тект')
друго
СховМессаге ('Нису све мале капице у Едит1.Тект'); крај;
instagram story viewer