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

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

Запись элементов в динамический массив. [D7, WinXP]


parasolka ©   (2011-04-06 12:36:00) 

Доброго времени суток. Есть динамический массив элементов определённого класса.

dinArray: array of myClass;

Как записать в массив не указатель, а сам объект типа myClass?


Dennis I. Komarov   (2011-04-07 11:05:00) [1]


> var  dinArray: array of myClass;

dinArray: array of pointer;


Leon-Z   (2011-04-07 10:36:00) [2]


> Ega23 ©   (07.04.11 10:30) [8]

Чтобы понятнее было. Вопрос задан явно новичком. :)


Ega23   (2011-04-07 10:30:00) [3]


> Вам верно нужно так:

А зачем нужна переменная myClassInst?

for i := 0 to 9 do
  dinArray[i] := myClass.Create;


Leon-Z   (2011-04-07 10:23:00) [4]

Вам верно нужно так:

var
 dinArray: array of myClass;
 i: Integer;
 myClassInst: myClass;
begin
// устанавливаем размер массива = 10 элементам
 SetLength(dinArray, 10);
// наполняем массив указателями на экземпляры класса
// сами объекты в Delphi всегда динамические, поэтому
// вегда обращение к ним идет через указатель, хотя явно,
// как в Pascal мы не разименовываем их.
 for i := 0 to 9 do
 begin
   myClassInst := myClass.Create;
   dinArray[i] := myClassInst;
 end;
// вызываем метод myClass вот так например:
 for i := 0 to 9 do
   dinArray[i].Vizvat_Metod_myClass(x, y, z);
end;


И. Павел   (2011-04-07 08:07:00) [5]

> [4] Ega23 ©   (06.04.11 19:45)

Сейчас уже точечными залпами не обойтись. Нужны массовые аргументы:
http://ru.wikipedia.org/wiki/%D0%9F%D1%83%D0%BB%D0%B5%D0%BC%D1%91%D1%82_%D0%9C%D0%B0%D0%BA%D1%81%D0%B8%D0%BC%D0%B0


_Юрий   (2011-04-06 20:10:00) [6]

В общем то, если заморочиться, то можно записать и сам объект в массив.
Перекрыв NewInstance так, чтобы вернулся буфер из массива.
Но для этого надо иметь достаточно веские причины.
Услышим ли мы описание причин от автора ветки?


Ega23   (2011-04-06 19:45:00) [7]


> цель коммунизм! что порекомендуешь? :)

Вот это:
http://ru.wikipedia.org/wiki/2%D0%9065


sniknik   (2011-04-06 19:15:00) [8]

> сам объект это и есть указатель
ну, это если он объектом объект называет, а ну как его "определённый класс" это рекорд? ;)

> какую цель хотите этим достичь. Тогда будет понятно - что вам порекомендовать.
цель коммунизм! что порекомендуешь? :)


И. Павел   (2011-04-06 15:24:00) [9]

> [0] parasolka   (06.04.11 12:36)

Вы лучше скажите - какую цель хотите этим достичь. Тогда будет понятно - что вам порекомендовать.


Медвежонок Пятачок   (2011-04-06 12:38:00) [10]

никак. сам объект это и есть указатель


Наверх

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