Как да използвате функции и процедури в Delphi

Случвало ли ви се е да пишете един и същ код отново и отново, за да изпълнявате някаква обща задача вътре мениджъри на събития? Да! Време е да научите за програмите в рамките на програмата. Нека наречем тези подпрограми за мини програми.

Въведение в подпрограмите

Подпрограмите са важна част от всяка програмен език, иDelphi не е изключение. В Delphi обикновено има два типа подпрограми: функция и процедура. Обичайната разлика между функция и процедура е, че функцията може да върне стойност, а процедура обикновено няма да го направи. Функцията обикновено се извиква като част от израз.

Разгледайте следните примери:

процедура Кажи здравей(конст sWhat:низ); започвам
ShowMessage ('Здравей' + sWhat); край; функция YearsOld (конст BirthYear: integer): цяло число; Var
Година, месец, ден: Слово; започвам
DecodeDate (дата, година, месец, ден); Резултат: = Година - година на раждане; край; 

След като подпрограмите са дефинирани, можем да ги наречем един или повече пъти:

процедура TForm1.Button1Click (Подател: TObject); 
instagram viewer
започвам SayHello („Потребител на Delphi“); край; процедура TForm1.Button2Click (Подател: TObject); започвам SayHello („Зарко Гаич“); ShowMessage („Вие сте“ + IntToStr (YearsOld (1973)) + „години!“); край;

Функции и процедури

Както виждаме, и функциите, и процедурите действат като минипрограми. По-специално, те могат да имат собствен тип, константи и променливи декларации вътре в тях.

Погледнете по-отблизо (разни) функции на SomeCalc:

функция SomeCalc. (конст SSTR: низ; конст iYear, iMonth: цяло число; Var iDay: цяло число): boolean; започвам...край; 

Всяка процедура или функция започва с a удар с глава който идентифицира процедурата или функцията и изброява параметри рутината използва, ако има такава. Параметрите са посочени в скоби. Всеки параметър има идентификационно име и обикновено има тип. Точка с запетая разделя параметрите в списък с параметри един от друг.

sStr, iYear и iMonth се наричат постоянни параметри. Постоянните параметри не могат да бъдат променяни чрез функцията (или процедурата). IDay се предава като a параметър varи можем да направим промени в него, вътре в подпрограмата.

Функциите, тъй като те връщат стойности, трябва да имат a вид на връщане обявен в края на заглавката. Върнатата стойност на функцията се дава от (окончателното) възлагане на нейното име. Тъй като всяка функция имплицитно има локална променлива Резултат от същия тип като функцията връща стойност, присвояването на Result има същия ефект като присвояване на името на функцията.

Подпрограми за позициониране и извикване

Подпрограмите винаги се поставят в секцията за изпълнение на устройството. Такива подпрограми могат да бъдат извикани (използвани) от обработващ събития или подпрограма в същата единица, която е определена след него.

Забележка: клаузата за използване на единица ви казва кои единици може да извиква. Ако искаме конкретна подпрограма в Unit1 да бъде използвана от обработвачите на събития или подпрограмите в друга единица (да кажем Unit2), трябва да:

  • Добавете Unit1 към клаузата за използване на Unit2
  • Поставете копие на заглавката на подпрограмата в секцията на интерфейса на Unit1.

Това означава, че подпрограмите, чиито заглавия са дадени в секцията на интерфейса, са глобален по обхват.

Когато извикваме функция (или процедура) вътре в собствената си единица, използваме нейното име с каквото и да е параметри са нужни. От друга страна, ако извикаме глобална подпрограма (дефинирана в някаква друга единица, например MyUnit), използваме името на единицата, последвано от период.

... // Процедурата SayHello е дефинирана вътре в това устройство
SayHello („Потребител на Delphi“); // Функцията YearsOld е дефинирана в MyUnit единица
Dummy: = MyUnit. YearsOld (1973);... 

Забележка: Функциите или процедурите могат да имат свои собствени подпрограми, вградени в тях. Вградената подпрограма е локална за подпрограмата на контейнера и не може да бъде използвана от други части на програмата. Нещо като:

процедура TForm1.Button1Click (Подател: TObject); функция Е малък(конст SSTR:низ): Булева; започвам// IsSmall връща True, ако sStr е в малки букви, False в противен случай
Резултат: = LowerCase (sStr) = sStr; край; започвам// IsSmall може да се използва само в Button1 OnClick събитиеако IsSmall (Edit1.Text) тогава
ShowMessage („Всички малки шапки в Edit1.Text“)
още
ShowMessage („Не всички малки шапки в Edit1.Text“); край;
instagram story viewer