Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Вниз

Указатели и классовые переменные   Найти похожие ветки 

 
LordOfRock ©   (2006-02-14 13:39) [0]

За неимением инструкции по делфи, задаю такой дебильный вопрос.

Есть класс. Добустим TMyClass

Создаю переменную классового типа: MyClass : TMyClass и делаю ей Create

Потом добавляю эту переменную в несколько экземпляров TList"a, допустим так:

var
 List1 : Tlist;
 List2 : TList;
begin
 List1.Create;
 List2.Create;
 List1.Add(MyClass);
 List2.Add(MyClass);
end;


При получении из одного Листа классовой переменной,затем изменения некоторых свойств: эти изменения отразятся сразу во всех Листах, или прописывать надо будет?


 
begin...end ©   (2006-02-14 13:55) [1]

> LordOfRock ©   (14.02.06 13:39)

> Создаю переменную классового типа: MyClass : TMyClass и
> делаю ей Create...

...и после этого переменная MyClass начинает указывать на некоторую структуру в памяти -- экземпляр класса.

> Потом добавляю эту переменную в несколько экземпляров TList"a...

...т.е. в несколько списков будет добавлен указатель на один и тот же экземпляр класса.

> При получении из одного Листа классовой переменной,затем
> изменения некоторых свойств...

...будет изменён экземпляр класса, на который она указывает. При этом элемент второго списка продолжает указывать на тот же самый экземпляр.

> ...эти изменения отразятся сразу во всех Листах?

В самих "листах" никаких изменений не будет -- в них, как и ранее, находятся указатели, значение которых (адрес экземпляра) не поменялось. А вот сам экземпляр, возможно, поменялся, и указатели из обоих списков теперь содержат адрес уже изменённого экземпляра.

> List1.Create;

List1 := TList.Create. Иначе будет не создание, а переинициализация. И с любым другим классом -- так же.


 
begin...end ©   (2006-02-14 14:04) [2]

> При этом элемент второго списка продолжает указывать на
> тот же самый экземпляр.

Чтобы не было неясностей, поясню: на тот же самый экземпляр, на который указывает элемент первого списка.


 
LordOfRock ©   (2006-02-14 14:37) [3]

begin...end ©   (14.02.06 13:55) [1]
begin...end ©   (14.02.06 14:04) [2]
Огромное спасибо за разъяснение. Собственно, на подсознательном уровне так и думал, но теперь вголове полная ясность.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.012 c
8-1127764517
Delphinist
2005-09-26 23:55
2006.03.05
Использование *.ogg в Delphi


11-1120545625
Gaddy
2005-07-05 10:40
2006.03.05
Form1.Button1Click - ошибка?


2-1139890063
Азат
2006-02-14 07:07
2006.03.05
функции в Делфи для работы с динам. памятью


1-1138967347
Darvin
2006-02-03 14:49
2006.03.05
Запретить закрытие не основной формы по Alt-F4


2-1140241181
Хинт
2006-02-18 08:39
2006.03.05
Помогите разобраться с TSocket (WinSock)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский