![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дополнение перечисления
Kolan © (2009-03-16 11:32:00)Здравствуйте!
У меня есть набор команд, которые закодированы числами. Часть команд является базовой, а часть может изменяться. Я бы хотел описать в одном модуле перечисление с базовым набором команд, а в других модулях иметь возможность расширять его.
Примерно так:
base.pas
TCommandTypes =
(
mtDeviceError = $FF,
mtVersionInfoRequest = $00,
mtVersionInfoAnswer = $80,
);
special.pas
TCommandTypes =
(
mtOperationModeRequest = $01,
mtOperationModeAnswer = $81,
mtImpedanceMeasurmentStartRequest = $02,
mtMeasurmentStartAnswer = $82,
...
);
Такое дополнение перечислений хочется сделать для того, что бы в базовом модуле создать набор функций, которые бы принималиTCommandTypesи работали бы как для команд из базового модуля, так и для команд из любого другого и вместе с тем работала бы проверка времени компиляции.
Понятно, что если я поступлю так как в примере, то базовый набор команд будет просто закрыти ничего не получится.
Как можно добиться желаемого?
Kolan (2009-03-16 12:59:00) [21]Palladin, отлично! Проверки типа нет, но подсказка при вызове функции выводится вполне понятная. Я думаю путаницы не возникнет, поэтому считаю, что ответ получил — благодарю.
Медвежонок Пятачок (2009-03-16 12:54:00) [22]Это невозможно сделать, я не знаю какие команды будут у устройств, которые появятся, скажем, в следующем году.
Тогда стоит подумать вообще о логичности выбора перечисления как нудного типа.
Хотя не вижу препятствий.
У меня тодже команды и тоже перечисления, причем даже без уточнения значений. Перечень команд постоянно из месяца в месяц растет.
И ничему этот рост не мешает.
Palladin (2009-03-16 12:50:00) [23]
> Kolan © (16.03.09 12:40) [4]
И в чем проблемы?
Type
TCommandType=type Integer;
Const
mtDeviceError:TCommandType = $FF
Kolan (2009-03-16 12:40:00) [24]>Чем простые константы не устроили?
Из всех вариантов этот мне нравится больше всего, но плохо, что в методах придется писатьFoo(Command: Integer), а неFoo(Command: TCommandTypes).
MsGuns, желание возникло так как сабжевые команды — это команды их протокола разных устройств. Часть таких команд базовая и есть во всех устройствах, а другая часть у каждого устройства своя.
>одно полное длинное перечисление.
Это невозможно сделать, я не знаю какие команды будут у устройств, которые появятся, скажем, в следующем году.
MsGuns (2009-03-16 11:58:00) [25]Интересно, откуда возникло такое желание, ведь суть перечислений - это именно постоянность
Palladin (2009-03-16 11:52:00) [26]
> Kolan © (16.03.09 11:32)
Чем простые константы не устроили?
Медвежонок Пятачок (2009-03-16 11:36:00) [27]одно полное длинное перечисление.
там, где хочется контроль по ограниченному перечню - ассерт