Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование на Delphi. От новичка до профессионала! 12.5 Передача параметров в функции


Информационный Канал Subscribe.Ru


MyDelphi7 http://mydelphi7.narod.ru

 

12.5 Передача параметров в функции

Параметры в функции и процедуры могут передаваться в основном двумя способами: по значению и по ссылке. То, что вы могли видеть в рассмотренном ранее примере — это передача параметра по значению. В этом случае в заголовке процедуры указывается имя параметра и его тип. Например:

procedure TForm1.F2(Ch:char);

В этом случае Ch — это локальное имя формального параметра, используемое только внутри данной процедуры. При вызове этой процедуры, который может иметь вид:

F2(Ch2);

в памяти создается временная переменная с именем Ch и в нее копируется значение аргумента Ch2. На этом связь между Ch и Ch2 разрывается. Вы можете изменять внутри процедуры значение Ch, но это никак не отразится на значении внешней переменной Ch2, указанной в вызове функции в качестве аргумента.

Такая передача параметров по значению имеет свои достоинства и недостатки. Достоинство заключается в том, что процедура не может испортить переданный в нее аргумент. Это важно для надежной работы приложения и позволяет разрабатывать процедуру, не задумываясь о том, не использованы ли где-то в программе те же имена параметров. Но у передачи параметра по значению имеется и ряд недостатков. Во-первых, процедура не может изменить значение аргумента, а иногда это очень желательно. Во-вторых, копирование значения аргумента требует дополнительных затрат времени и памяти для хранения копии. Если речь идет о какой-то переменной простого типа, это, конечно, не существенно. Но если, например, аргумент — массив из тысячи элементов, то соображения затрат времени и памяти могут стать существенными. И в-третьих, после окончания работы процедуры временная переменная, хранившая значение параметра, уничтожается. Поэтому ее нельзя использовать, например, для накопления какой-то информации.

Доя реализации второго способа передачи информации – по ссылке, перед именем параметра в заголовке функции должно быть указано ключевое слово var. Например:

procedure TForm1.F2(var Ch:char);

В этом случае не происходит копирования значения аргумента в локальную, временную переменную в процедуре. Процедура реально работает не с параметром, а со ссылкой — указателем на место хранения аргумента в памяти. И любые изменения параметра Ch, произведенные в процедуре, в действительности относятся не к этому параметру, а к тому аргументу, который передан при вызове процедуры. Таким образом, ключевое слово var позволяет возвращать информацию из процедуры в вызвавшую его внешнюю процедуру.



Если Вам что-то осталось непонятным, оставьте на потом.


Всё, что представлено в рассылке, копировать запрещено!
Сайт рассылки http://mydelphi7.narod.ru тут архив.
 

 

 



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное