Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.30;
Скачать: 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 вся ветка

Текущий архив: 2002.09.30;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
1-98082
Осирис
2002-09-19 15:59
2002.09.30
Диалоговое окно


4-98415
Ernie
2002-08-14 02:44
2002.09.30
Насчет мыши...


1-98110
Semion
2002-09-18 08:41
2002.09.30
чужой Edit1


8-98238
Сявчик
2002-05-30 21:01
2002.09.30
Формы


3-98016
Gaber
2002-09-09 14:06
2002.09.30
Родительская и дочерняя формы