Вниз
Скачать: CL | DM;

Создание экземпляров класса   Найти похожие ветки 

← →
Шурик Ш   (2002-09-18 17:14) [0]

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


← →
MBo ©   (2002-09-18 17:21) [1]

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

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



← →
Шурик Ш   (2002-09-18 17:24) [2]

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


← →
Шурик Ш   (2002-09-18 17:28) [3]

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


← →
qube ©   (2002-09-18 17:33) [4]

TTable.Create(AOwner: TComponent).


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

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


← →
Шурик Ш ©   (2002-09-18 17:35) [5]

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


← →
Шурик Ш ©   (2002-09-18 17:40) [6]

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


← →
qube ©   (2002-09-18 17:41) [7]

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


← →
MBo ©   (2002-09-18 17:41) [8]

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


← →
MBo ©   (2002-09-18 17:43) [9]

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


← →
qube ©   (2002-09-18 17:44) [10]

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


← →
Юрий Зотов ©   (2002-09-18 17:44) [11]

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

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


← →
Шурик Ш ©   (2002-09-18 17:46) [12]

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


← →
Шурик Ш ©   (2002-09-18 17:49) [13]

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


← →
MBo ©   (2002-09-18 17:51) [14]

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



← →
Юрий Зотов ©   (2002-09-18 19:29) [15]

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

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

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 23:04) [16]

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

???????????

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
и т.д.



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.011 c
14-98319
NeyroSpace
2002-09-05 11:14
2002.09.30
Можно ли написать серьезный проект на VCL, а не на API?


14-98280
Nega
2002-09-01 13:29
2002.09.30
Что такое виртуальный метод ?


3-98011
curious2002
2002-09-10 20:55
2002.09.30
Что такое поток (stream)?


14-98357
Карлсон
2002-09-06 15:35
2002.09.30
CC


1-98054
гончий
2002-09-18 14:23
2002.09.30
Как получить текущую дату в обход стандартных функций Date & Now




   Наверх