![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание экземпляров класса [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;