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

Запись элементов в динамический массив.   Найти похожие ветки 

← →
parasolka   (2011-04-06 12:36) [0]

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

dinArray: array of myClass;

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


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

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


← →
И. Павел ©   (2011-04-06 15:24) [2]

> [0] parasolka   (06.04.11 12:36)

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


← →
sniknik ©   (2011-04-06 19:15) [3]

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

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


← →
Ega23 ©   (2011-04-06 19:45) [4]


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

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


← →
_Юрий   (2011-04-06 20:10) [5]

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


← →
И. Павел ©   (2011-04-07 08:07) [6]

> [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


← →
Leon-Z ©   (2011-04-07 10:23) [7]

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

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;


← →
Ega23 ©   (2011-04-07 10:30) [8]


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

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

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


← →
Leon-Z ©   (2011-04-07 10:36) [9]


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

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


← →
Dennis I. Komarov ©   (2011-04-07 11:05) [10]


> var  dinArray: array of myClass;

dinArray: array of pointer;



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

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



Память: 0.47 MB
Время: 0.005 c
1-1260213430
Leto
2009-12-07 22:17
2011.07.17
Странно работает thintwindow


4-1249050847
Decoding
2009-07-31 18:34
2011.07.17
TaskBar


2-1302413666
snake-as
2011-04-10 09:34
2011.07.17
При запуске второй копии программы восстанавливать из трея первую


2-1302357979
takki
2011-04-09 18:06
2011.07.17
TDrawGrid


4-1243494188
Дмитрий
2009-05-28 11:03
2011.07.17
USB Flash Drive + CreateFile()




   Наверх