Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизВопрос по параметрам процедур Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c