Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как внутри класса динамически создавать обьекты? [D7, XP]


allucard ©   (2007-04-17 09:30:00) 

Доброго времени суток.

Есть класс:

TNewClass = class
StringList: TStringList;
FileStream: TFileStream;
P: Pointer;
Priv....end;

Я не знаю сколько мне понадобится экземпляров классов может быть от 0 до 10000.

Вопрос: как создать необходимое колличество экземпляров класса без их описания в разделе var?

Спасибо.


Сергей М.   (2007-04-17 10:32:00) [1]


> allucard   (17.04.07 10:22) [13]


Ну а что касается сторонней литературы, то загляни , скажем, сюда:

http://softoroom.net/topic18367s20.html
Пост от 21.03.2007 - 18:26


Сергей М.   (2007-04-17 10:26:00) [2]


> allucard   (17.04.07 10:22) [13]


Стандартная справка в большинстве случаев достаточно информативна.
То что не найдено в справке, с легкостью находится анализом исходных текстов.
То что не найдено (или непонятно) среди исх.текстов, всегда найдется на просторах Гугля)


allucard   (2007-04-17 10:22:00) [3]


> Сергей М. ©   (17.04.07 10:17) [12]

Слушай, ну поделись какие книги ты читал?
Где есть такое хорошее(понятное) описание?


Сергей М.   (2007-04-17 10:17:00) [4]


> TObjectList всё же придется объявить где-то


Можно и не объявлять, если сделать TNewClass наследником TObjectList.


Сергей М.   (2007-04-17 10:15:00) [5]


> их можно сколь угодно добавлять не описывая в var?


Угу. В теор.пределе - до 2^31-1 штук)


ЮЮ   (2007-04-17 10:15:00) [6]

TObjectList всё же придется объявить где-то.
Только почему в var? Лучше в private секции того класса, которому твой класс потребуется.


allucard   (2007-04-17 10:11:00) [7]


> Сергей М. ©   (17.04.07 09:34) [1]

И их можно сколь угодно добавлять не описывая в var?


ЮЮ   (2007-04-17 10:11:00) [8]

>TObjectList же при уничтожении автоматически уничтожает объекты в контролируемом им списке.

Если он создан с соответсвующими параметрами :). Если так - TObjectList.Create( false) - то он равнодущен к жизни своих объектов,
А если так - TObjectList.Create( true) или  TObjectList.Create, то - да. И не только при уничтожении, но и при удалении элемента списка.


allucard   (2007-04-17 10:07:00) [9]


> Ну кому ж как не тебе самому знать, какие параметры у конструктора
> твоего собственного класса ?)

:)


_Аноним   (2007-04-17 10:04:00) [10]


> Так можно ж и просто через TList?

Можно. Только разрушать их тебе придется руками, а так абсолютно то же самое.

> вот этого например: TFileStream.Create(..)
> или этого: TMySuperPuperClass.Create(..).


параметры конструктора определяет сам класс. Например в файлстрим надо передать имя файла и флаги. При чем тут self ?


Сергей М.   (2007-04-17 10:04:00) [11]


> TObjectList и есть список на указатели?


TObjectList - это список объектов,  а объекты в Делфи представлены указателями.


> можно ж и просто через TList?


Можно и через TList, но тогда за разрушение объектов в списке ты обязан отвечать сам. TObjectList же при уничтожении автоматически уничтожает объекты в контролируемом им списке.


> вот этого например: TFileStream.Create(..)


Открой справку и почитай про параметры конструктора этогокласса.


> или этого: TMySuperPuperClass.Create(..).


Ну кому ж как не тебе самому знать, какие параметры у конструктора твоего собственного класса ?)


allucard   (2007-04-17 09:59:00) [12]

TObjectList и есть список на указатели?
Так можно ж и просто через TList?

>Чьего Create ?
вот этого например: TFileStream.Create(..)
или этого: TMySuperPuperClass.Create(..).


Сергей М.   (2007-04-17 09:43:00) [13]


> А внутри Create писать self или родителя?


ЧьегоCreate ?


> и как то же через указатели можно


Предложенный выше вариант и есть "через указатели".


allucard   (2007-04-17 09:38:00) [14]


> Сергей М. ©   (17.04.07 09:34) [1]

Спасибки, что супер класс то точно :)

А внутри Create писать self или родителя?

Да и как то же через указатели можно, или так уже не модно?


Сергей М.   (2007-04-17 09:34:00) [15]

TNewClass = class
..
 FObjList: TObjectList;
..
end;

FObjList.Add(TStringList.Create(..));
FObjList.Add(TFileStream.Create(..));
..
..
FObjList.Add(TMySuperPuperClass.Create(..));


Наверх

Титульная страница Поиск, карта сайта Написать письмо