Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с классами и объектами... / 12 сообщений из 12, страница 1 из 1
31.10.2020, 21:30
    #40013796
UtoECat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с классами и объектами...
В один из своих проектов решил добавить немного "синтаксического сахарка", чтобы и себе жизнь упростить и код красивее сделать.
Решил так "посыпать сахаром" самые часто повторяющиеся части... И вот дело дошло до :
Код: pascal
1.
2.
3.
4.
5.
6.
7.
var l : integer;

...

L := LENGTH(PARENTS);
SETLENGTH(PARENTS,L+1);
Parents[l] := someclass.create();


Эта фигня часть уж очень сильно повторяется в FormCreate. Решил забабахать это в виде отдельной процедуры :
Код: pascal
1.
2.
3.
4.
5.
6.
7.
 PROCEDURE ADDPARENT( C : TCLASS);
 VAR L : INTEGER;
 BEGIN
 L := LENGTH(PARENTS);
 SETLENGTH(PARENTS,L+1);
 PARENTS [L] := c.Create;
 END;


и немного оплошался ... ведь массив Parents объявлен как
Код: pascal
1.
TYPE TPARENTARRAY = ARRAY OF TGAMEPARENT

, а не как array of Tobject... Вопрос : на какой тип надо заменить TClass чтобы компилятор понимал, что я от него хочу, и как это нечто объявить.

P.S : извините, если мой вопрос будет банальным... Я всё же только учусь.
...
Рейтинг: 0 / 0
31.10.2020, 21:37
    #40013798
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с классами и объектами...
Код: pascal
1.
2.
3.
4.
type
TGameParentClass = class of TGAameParent;

procedure AddParent(C: TGameParentClass);
...
Рейтинг: 0 / 0
31.10.2020, 22:40
    #40013823
UtoECat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с классами и объектами...
DimaBr, спасибо!
...
Рейтинг: 0 / 0
31.10.2020, 22:43
    #40013828
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с классами и объектами...
Parents := Parents + [c.Create]
...
Рейтинг: 0 / 0
31.10.2020, 22:50
    #40013832
UtoECat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с классами и объектами...
Dmitry Arefiev, ну это уже на любителя...
...
Рейтинг: 0 / 0
31.10.2020, 22:55
    #40013834
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с классами и объектами...
UtoECat
Dmitry Arefiev, ну это уже на любителя...

Так ты уже любишь
...
Рейтинг: 0 / 0
01.11.2020, 06:37
    #40013874
UtoECat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с классами и объектами...
Dmitry ArefievТак ты уже любишь
Вы видимо меня не совсем поняли... Но уже не важно. Уже всё работает.
...
Рейтинг: 0 / 0
01.11.2020, 14:19
    #40013932
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с классами и объектами...
UtoECat
Dmitry ArefievТак ты уже любишь

Вы видимо меня не совсем поняли... Но уже не важно. Уже всё работает.
Код: pascal
1.
Parents := Parents + [c.Create]


В одну строчку делает ровно то же что и процедура:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
 PROCEDURE ADDPARENT( C : TCLASS);
 VAR L : INTEGER;
 BEGIN
 L := LENGTH(PARENTS);
 SETLENGTH(PARENTS,L+1);
 PARENTS [L] := c.Create;
 END;
...
Рейтинг: 0 / 0
01.11.2020, 17:41
    #40013993
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с классами и объектами...
Не, вы все неправильно говорите. Правильно будет так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
 pRoCeDuRe AdDpArEnT ( c : TcLaSs);
 VaR l : InTeGeR;
 bEgIn
 L := lEnGtH(pArEnTs);
 SeTlEnGtH(pArEnTs,L+1);
 pArEnTs [L] := c.CrEaTe;
 EnD;
...
Рейтинг: 0 / 0
07.11.2020, 19:19
    #40016240
UtoECat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с классами и объектами...
asutp2,
к чему это?
...
Рейтинг: 0 / 0
07.11.2020, 19:25
    #40016241
UtoECat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с классами и объектами...
alekcvp
UtoECat
пропущено...

Вы видимо меня не совсем поняли... Но уже не важно. Уже всё работает.

Код: pascal
1.
Parents := Parents + [c.Create]


В одну строчку делает ровно то же что и процедура:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
 PROCEDURE ADDPARENT( C : TCLASS);
 VAR L : INTEGER;
 BEGIN
 L := LENGTH(PARENTS);
 SETLENGTH(PARENTS,L+1);
 PARENTS [L] := c.Create;
 END;


Проблема была в том, что я не понял какой тип должен был иметь var C в моей процедуре... И да... Вы неправильно выразились... Эта строка кода может заменить три строки кода в процедуре на себя, но заменить ПРОЦЕДУРУ не способна. + я пытаюсь отстранить себя и тех, кто может юзать мой код от того, что это вообще массив ( не знаю зачем) и такая строка особо мне не поможет, а наоборот усилит понимание этого...
p.s : + я учился по статьям на пятого дельфина (вроде) и такого синтаксиса не признаю (͡° ͜ʖ ͡°)
...
Рейтинг: 0 / 0
16.11.2020, 16:41
    #40018966
Mixrud
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с классами и объектами...
TListGameParent<T: TGameParent> = Class (TObjectList<T>)

Он внутри не так часто вызывает SetLength - это производительность.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с классами и объектами... / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]