IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Как создать указатель на экземпляр класс?
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


Блин, наитупейший вопрос с моей стороны, но надеюсь Вы сможете мне помочь...
В общем имеется некий класс:

Код

type TMyClass = class
 x : integer;
end

...
var
 Form1 : TForm1
 ...
 MyClass1 : TMyClass;

.....
TForm1.OnCreate:
MyClass1 := TMyClass.Create;


Вопрос! Как на TMyClass создать указатель?
Вообще задача ставится так: создать массив из указателей на экземпляры класса (ну в принципе если получится создать один указатель, то и массив из таковых создать будет не проблема, я так думаю...)

Кстати, экземпляры класса, это насколько я понимаю что-то вроде нескольких копий этого класса?
Как можно создать экземпляр класса? Что-то вроде:
Код
arr: array [0..10] of TMyClass;

это то что мне нужно?

И ещё! Массив классов это является корректным решением или нет?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






BlackNightFear
Цитата
Вообще задача ставится так: создать массив из указателей на экземпляры класса

Это делается так:
Код

type
 PTMyClass = ^TMyClass;
 TMyClass = class
 x : integer;
 end;

Var
 arr: array [0..10] of PTMyClass;


А для чего это вообще нужно? Может есть более подходящее решение...

Хотя (из справки по Дельфи)
Цитата
Every class (and therefore every component) is really a pointer. The compiler automatically dereferences class pointers for you, so most of the time you do not need to think about this. The status of classes as pointers becomes important when you pass a class as a parameter. In general, you should pass classes by value rather than by reference. The reason is that classes are already pointers, which are references; passing a class by reference amounts to passing a reference to a reference.


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


Цитата
И ещё! Массив классов это является корректным решением или нет?


Смотря для чего


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


ну например есть класс, который скажем (некоторый компонент!), который в Create принимает TImage.Canvas и на нем прорисовывает чего-нибудь....
И теперь представьте что до фига на форме этих TImage (Image1, ..., ImageN)
И на каждом нужно рисовать тем самым классом... (причем с каждым ведь при этом надо держать связь, чтобы что-то перерисовать на нем (определенные методы класса делают это, т.е. одна процедура одно рисует, другая другое...))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


Не рентабельно. лучше циклом


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


Dark
В смысле циклом? Кол-во ImageN заранее неизвестно, сколько пользователь нажмет кнопочку раз, каждый раз и будет создаваться динамически новый Image и на нем рисоваться или чего там нужно, обрабатываться короче классом... что уже не важно!
В каком смысле Вы имеете ввиду использование цикла?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


аха, тогда действительно динамическая память... че то мой мыслительный аппарат глюкнуло к концу полусмены


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


Иогда нуна динамически выделять... тут фиксироваееый массив не поможет


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


Dark
а если все-таки кол-во TImage ограничено будет? rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


А зачем =))


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


Dark
на всяк случай! :D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


что-то даже не представляю как создать экземпляр класса? Массивом?
т.е.:
Код
arr: array [0..10] of TMyClass;
...
arr[0] := arr[0].Create;
....

так что ли?
выглядит как-то бредово...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






BlackNightFear
Зачем?

Вот так:
Код

var
arr: array [0..10] of TMyClass;
...
for i := 1 to 10 do
 arr[i] := TMyClass.Create;


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


ты имел ввиду:
......
arr[I] ???
Или именно все в первый элемент? это как?? unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






blink.gif Конечно arr[i] ... забыл 0 на букву поменять ... lol.gif
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 15.05.2024 14:02
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name