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

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

Создание экземпляров класса [D6]


Шурик Ш ©   (2002-09-18 17:14:00) 

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


MBo   (2002-09-18 23:04:00) [1]

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

???????????

for i:=1 to 5 do begin
//1-я итерация
a:=TmyClass.Create;//выделена память по адресу, например, 1000
a.X:=1l
... устанавливаем, что нужно
List.Add(a);//в List[0] положили 1000

//2-я итерация
a:=TmyClass.Create;//выделена память по НОВОМУ адресу, например, 2000
a.X:=12
... устанавливаем, что нужно
List.Add(a);//в List[1] положили 2000
и т.д.


Юрий Зотов   (2002-09-18 19:29:00) [2]

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

А если немного подумать?

var
A: array[1..10] of TMyClass;

for i := 1 to 10 do
begin
A[i] := TMyClass.Create(...);
with A[i] do
begin
MyProp := ...;
// и т.д.
end
end;


MBo   (2002-09-18 17:51:00) [3]

>Т.е. совсем не обязательно работать через ^?
Даже очень вредно, если речь идет об объектах


Шурик Ш   (2002-09-18 17:49:00) [4]

Тогда получается, что весь массив указателей будет ссылаться на последний экземпляр для примера MBo © (18.09.02 17:21)


Шурик Ш   (2002-09-18 17:46:00) [5]

Т.е. совсем не обязательно работать через ^?


qube   (2002-09-18 17:44:00) [6]

В Object Pascal собственно экземпляров не бывает, все работа неявно происходит через указатели.


Юрий Зотов   (2002-09-18 17:44:00) [7]

> А потом, это совсем не массив указателей, а массив,
> собственно, экземпляров

В Delphi это одно и то же. Переменная - экземпляр класса всегда и есть указатель на этот экземпляр. И ничто другое.


MBo   (2002-09-18 17:43:00) [8]

указателей на экземпляры ;)


qube   (2002-09-18 17:41:00) [9]

У любого компонента может быть владелец. Владелец прибивает всех, кем владеет, перед собственной смертью (во как драматично вышло). Application можешь указать, к примеру.


MBo   (2002-09-18 17:41:00) [10]

Естественно, параметры конструктора зависят от класса.
Для компонентов это Owner, для других классов - другие параметры или вообще их отсутствие.
хелп на TTable.Create не пробовал посмотреть?


Шурик Ш   (2002-09-18 17:40:00) [11]

А потом, это совсем не массив указателей, а массив, собственно, экземпляров получается.


Шурик Ш   (2002-09-18 17:35:00) [12]

Так я прочитал тоже, а какой параметр там нужно указать?


qube   (2002-09-18 17:33:00) [13]

TTable.Create(AOwner: TComponent).


> А вообще, что лучше использовать массив или List?

Это зависит от ситуации. А еще есть TObjectList, TInterfaceList


Шурик Ш   (2002-09-18 17:28:00) [14]

Кстати, не хочет работать...
TTable.Create; - Not enough actual parameters.


Шурик Ш   (2002-09-18 17:24:00) [15]

Спасибо! А вообще, что лучше использовать массив или List?


MBo   (2002-09-18 17:21:00) [16]

for i:=1 to 5 do begin
a:=TmyClass.Create;
a.X:=1l
... устанавливаем, что нужно
List.Add(a);
end;

использование
TMyClass(List[i]).X:=2;


Наверх

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