Главная страница
    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.46 MB
Время: 0.031 c
1-1099378621
Alexis
2004-11-02 09:57
2004.11.14
Проблема с TImage


14-1098989503
Delphin
2004-10-28 22:51
2004.11.14
смс шлюзы


3-1097480612
ceval
2004-10-11 11:43
2004.11.14
Подскажите начинающему с вычисляемым полем.


14-1098879075
Pentium133
2004-10-27 16:11
2004.11.14
Было на одном форме...


14-1098942290
ИМХО
2004-10-28 09:44
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский