Главная страница
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.48 MB
Время: 0.049 c
1-1099167997
ser_ega
2004-10-31 00:26
2004.11.14
Form


1-1098940211
Font
2004-10-28 09:10
2004.11.14
Unicode и VCL


14-1098561110
@BraIN
2004-10-23 23:51
2004.11.14
Чем Paste отличается от Insert?


1-1099295258
MAVOR
2004-11-01 10:47
2004.11.14
Как найти начало и конец строки файла (текстового)!???


1-1099093278
Garfunkel
2004-10-30 03:41
2004.11.14
Прокручивающийся текст