Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.14;
Скачать: CL | DM;

Вниз

Вопрос по параметрам процедур   Найти похожие ветки 

 
Dmitrij_K   (2004-11-02 11:47) [0]

Скажите пожалуйста, уважаемые мастера, если я в процедуру передаю класс, типа
procedure aaa(sl:TStringList);
то в процедуре "sl" будет указателем на переданную переменную или новой переменной которая иничтожиться при выходе из процедуры.


 
Reindeer Moss Eater ©   (2004-11-02 11:49) [1]

то в процедуре "sl" будет указателем на переданную переменную или новой переменной которая иничтожиться при выходе из процедуры.

И то и другое одновременно


 
Digitman ©   (2004-11-02 11:59) [2]


> в процедуре "sl" будет указателем на переданную переменную
> или новой переменной которая иничтожиться при выходе из
> процедуры.


sl - это не переменная, это формальный параметр процедуры
в ран-тайм же обращение к идентификатору sl есть обращение к фактическому параметру, т.е. обращение к фактически переданному значению.

в дан.случае фактически будет передан указатель на экз-р некоего класса TStringList, и с этим экземпляром в теле процедуры можно делать все что угодно, вплоть до вызова его деструктора, за освобождение же области памяти, выделенной при вызове процедуры для передачи этого указателя, беспокоиться не нужно.


 
DiamondShark ©   (2004-11-02 11:59) [3]

Новая переменная, котора будет содержать указатель на имеющийся экземпляр.


 
TUser ©   (2004-11-02 12:02) [4]

Поясню [1]
Все переменные типа class в Delphi - суть указатели на объект. Т.е. сам объект существует в единчтвенном экземпляре, если специально не предприняты меры по его "клонированию". Если ты передаешь объект в процедуру как параметр, то туда передается значение-указатель на этот объект. В то эже время, если нет var, то присвоение sl:=$ahahah не  приведет к изменению указателя на объект в вызывающей программе. Т.е. в то же время это и переменная, локальная по отношению к данной процедуре, а тип ее - указатель на объект.


 
Cobalt ©   (2004-11-02 19:27) [5]

Т.е. если ты в процедуре изменишь содержимое объекта класса, то по выходе из процедуры изменения останутся.
А вот если ты sl присвоишь новый объект - то "снаружи" указатель на объект не изменится.



Страницы: 1 вся ветка

Текущий архив: 2004.11.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.089 c
3-1097580456
Павел
2004-10-12 15:27
2004.11.14
как использовать транзакцию


1-1099046125
Санёк
2004-10-29 14:35
2004.11.14
Системный формат даты


1-1099204718
проходящий мимо
2004-10-31 09:38
2004.11.14
edit


3-1097545850
Black
2004-10-12 05:50
2004.11.14
Как записать в столбец базы ADO MS ACCESS значение checkBox?


1-1099152138
Tria
2004-10-30 20:02
2004.11.14
Как в TBitBtn отловить момент после создания формы?