Главная страница
    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.014 c
3-1136903860
Silver...
2006-01-10 17:37
2006.03.05
Чтоб TADODataSet не записивал в БД но не режим ReadOnly


4-1134741007
MixAnOL
2005-12-16 16:50
2006.03.05
Управление чужим приложением


3-1137025928
Kromwerk
2006-01-12 03:32
2006.03.05
Преобразование времени


2-1140252545
Urvin
2006-02-18 11:49
2006.03.05
MouseMove и его Shift


2-1140177674
zorik
2006-02-17 15:01
2006.03.05
Не считываются cookies (cgi)





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