Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.021 c
3-1097581615
Term
2004-10-12 15:46
2004.11.14
ERwin как подключиться к базе MSSQL2000


4-1097004335
Comp
2004-10-05 23:25
2004.11.14
Не появляются подсказки TOOLTIP на TOOLBAR


1-1098973712
debuger
2004-10-28 18:28
2004.11.14
Синхронизация по времени выполнения.


3-1097618520
saNat
2004-10-13 02:02
2004.11.14
ADO и MS Access


3-1098082300
Леван
2004-10-18 10:51
2004.11.14
Что за чушь?




   Наверх