Помощь - Поиск - Пользователи - Календарь
Полная версия: Массив типов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
sheka
В зависимости от ситуации переменную сделать нужного типа. Как можно это сделать?
TarasBer
type UberType = record
case kind:byte of (
0: b: byte;
1: w: word;
2: i: integer;
3: s: string[31];
// и так далее...
);
end;
sheka
Не могу сформулировать правильно, но это чуть не то. Вот смотри, допустим есть массив объектов. В зависимости от нажатой клавиши хочу создать объект нужного типа. Можно ли эти типы как-то загнать в массив и потом просто по индексу создать объект? Или ничего не остается как делать обыкновенный кейс от нажатой клавиши?
volvo
А тебе в любом случае придется делать Case, хотя бы для определения, какая клавиша нажата. Так чего огород городить? В этом же кейсе в зависимости от кода нажатой клавиши создавай объект нужного типа.
volvo
P.S. Можешь также заглянуть вот сюда:
Delphi Virtual Constructor - в FPC оно тоже доступно. Пункт 2.3 будет представлять для тебя интерес smile.gif
sheka
Жаль что только с классами такое возможно.
volvo
Кури Фабричный метод (шаблон проектирования), может быть удастся сделать и с объектами, если очень надо. Но я бы не стал изобретать уже изобретенное...
-TarasBer-
А чем плохи вариантные поля? Я вот на полном серьёзе их использовал в движке, там каждый объект мог быть и стеной, и комнатой, и оружием, и монстром.

Вот только контроля за дискриминантом очень не хватало.
-TarasBer-
Шрифт 7го размера - это самый большой, оказывается?!
Модераторы, исправьте, я имел в виду мелкий еле видный текст.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.