Начини за предаване на параметри към подпрограми
По подразбиране се приема, че параметрите на обикновените типове, например Real, Integer, String, се предават по стойност, а параметрите на такива типове като визуални компоненти, динамични масиви се предават по име. Ако има нужда да се посочи изрично, че даден параметър се предава по име, тогава думатаvar се записва преди името на параметъра или списък с имена от същия тип.
3.1.2.1 Предаване на параметри по стойност
Предаването на параметри по стойност предполага, че когато се извика подпрограмата, в паметта ще бъде разпределена специална област за запис на копия на стойностите на действителните параметри, с които подпрограмата ще работи.
Този метод на предаване защитава променливите, предадени на подпрограмата като параметри от неволна промяна, тъй като подпрограмата работи с копия. В допълнение, този метод ви позволява да зададете изрази като действителни параметри. При предаване на параметри стойността на този израз ще бъде изчислена и предадена на подпрограмата.
Недостатъкът на този метод на предаване е, че при предаване на параметри, които изискват много памет, като големи масиви от числа или дълги низове, копията заемат много място в паметта и отнема много време за прехвърляне на данни от едно място в паметта в друго.
3.1.2.2 Предаване на параметри по име
С този метод на предаване само променливи могат да бъдат предавани като действителни параметри. Израз и дори едно число или символ не могат да се прехвърлят по име.
Но страничният ефект има и положителна страна. Предаването на параметри по име може да се използва за връщане на резултатите от подпрограма чрез действителни параметри. Този метод на връщане е особено ефективен, когато трябва да върнете няколкопараметри. В крайна сметка функцията връща само една стойност.
По-горе, в параграф 3.1.1, вече беше разгледан пример за процедура с предаване на параметър по име.
Помислете за друг пример за използване на предаване на параметър по име за връщане на резултатите от подпрограма.
Създаденото по-долу приложение за формула използва процедура за четене на коефициентите на уравнение. Изходният код за тази процедура е показан по-долу.
Процедура getKoef (var kA, kB, kC:Real);
Започнете
край;
В тази процедура съдържанието на текстовите полета се преобразува в реални числа и резултатите от преобразуването се присвояват на формални параметри, които се декларират, че се предават по име. Това се обозначава с думатаvar преди имената на параметрите.
Тази процедура се извиква в друга процедура, която обработва събитието onClick на бутона Изчисли по формула. Фрагмент от тази процедура е показан по-долу.
процедура TfrmSubroutine.btnCalculateRootsClick(Подател: TObject);
променлива a, b, c :Реално;
Започнете
//Преди да извикате процедурата getKoefKvUr
// стойности на променлива a,b,cнедефинирано
// След извикването на процедурата, стойностите на променливите
//a,b,cсъответстват на съдържанието на текстовите полета