Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.033 c
3-1097736858
alsov1
2004-10-14 10:54
2004.11.14
Как в timestamp записать милисекунды?


14-1098458364
Gero
2004-10-22 19:19
2004.11.14
Программы для тестирования железа


4-1096890030
DelphiLexx
2004-10-04 15:40
2004.11.14
Персонажи, подобные скрепке в Microsoft Word e


1-1099066921
t0XiC
2004-10-29 20:22
2004.11.14
Использование TStrings


14-1098947558
peypivo
2004-10-28 11:12
2004.11.14
Кодировки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский