Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];

Вниз

множества   Найти похожие ветки 

 
unreger   (2003-04-29 08:43) [0]

type
TSProgrammStateOK = (ps_Neutral=0, ps_OK=1, ps_Warning=2);
TSProgrammStatesOK = set of TSProgrammStateOK;
TSProgrammStateError = (ps_Error=3, ps_Critical=4);
TSProgrammStatesError = set of TSProgrammStateError;

Надо объявить что-то вроде
TSProgrammState = TSProgrammStateOK+TSProgrammStateError (объединение)

Только не соображу как это сделать.

Хочется
if CurrentState in TSProgrammStatesOK then ....
где CurrentState типа TSProgrammState


 
Goffman   (2003-04-29 08:57) [1]

Можно объявить ps_Neutral, ps_OK итд константами
а множества объявлять так
TSProgrammStatesOK=set of ps_Neutral..ps_Warning;
TSProgrammStatesError = set of ps_Error..ps_Critical;

TSProgrammState=set of byte;

Надеюсь смысл ясен


 
unreger   (2003-04-29 09:42) [2]

То что надо!
Спасибо.


 
evvcom   (2003-04-29 09:55) [3]

Или так:
type
TSProgrammState = (ps_Neutral, ps_OK, ps_Warning, ps_Error, ps_Critical);
TSProgrammStateOK = (ps_Neutral..ps_Warning);
TSProgrammStateError = (ps_Error..ps_Critical);

TSProgrammStates = set of TSProgrammState;
TSProgrammStatesOK = set of TSProgrammStateOK;
TSProgrammStatesError = set of TSProgrammStateError;




 
Goffman   (2003-04-29 10:01) [4]


> evvcom © (29.04.03 09:55)

А скомпилировать пробовал :)


 
evvcom   (2003-04-29 10:04) [5]

> Goffman © (29.04.03 10:01)
Сейчас нет. А вообще что-то типа этого я уже делал.
Сорьки! Надо без скобок:

TSProgrammStateOK = ps_Neutral..ps_Warning;
TSProgrammStateError = ps_Error..ps_Critical;


 
Goffman   (2003-04-29 10:09) [6]

Выдаст Undeclared Identifier


 
han_malign   (2003-04-29 10:34) [7]

Извращенцы
type
TSProgrammState = (ps_Neutral, ps_OK, ps_Warning, ps_Error, ps_Critical);
const
cSProgrammStateOk = [ps_Neutral..ps_Warning];
cSPragrammStateError = [ps_Error..ps_Critical];

- намного корректней просто объявить константы подмножеств и проверять вхождение в них, тем более, что в более сложных случаях можно комбинировать эти подмножества операциями объединения, пересечения, et cetera...


 
unreger   (2003-04-29 11:34) [8]

Константы подмножеств - вот оно, нужное слово.
Только
TSProgrammState = (ps_Neutral=0,ps_OK=1,ps_Warning=2,ps_Error=3,ps_Critical=4);
т.к. надо обращаться к элементам массива.


 
evvcom   (2003-04-29 12:37) [9]

Можно массив описать:
type TMyArray = array[TSProgrammState] of <AnyType>;
и обращаться MyArray[SProgrammState]
Если же все-таки тип индексов массива целочисленный, то так:
MyArray[Integer(SProgrammState)]
но первый вариант мне гораздо больше нравится.


 
evvcom   (2003-04-29 12:40) [10]

Это к тому, что
TSProgrammState = (ps_Neutral=0,ps_OK=1,ps_Warning=2,ps_Error=3,ps_Critical=4);
имеет недостаток. Если вдруг захочешь в этот тип куда-нибудь в середину добавить еще какое-нибудь значение, а суммарное их количество достаточно велико, то придется вручную довольно много править. Поэтому увеличивается вероятность ошибки порой даже трудно уловимую.


 
unreger   (2003-04-29 12:45) [11]

MyArray[Integer(SProgrammState)]

это все внутри класса и сделал private property, которое возвращает
Integer(от текущего ProgrammState) :)


 
unreger   (2003-04-29 13:00) [12]

evvcom © (29.04.03 12:40)

вряд ли потребуется расширять можество, но подумал и, пожалуй,
соглашусь с первым способом

type TMyArray = array[TSProgrammState] of <AnyType>;


 
evvcom   (2003-04-29 14:04) [13]

> это все внутри класса и сделал private property

Ничего не мешает реализовывать эту идею и внутри класса. Преобразования типов Integer(TOrdinalType) и TOrdinalType(Integer) добавляют дополнительные символы в текст программы, но не добавляют ничего в результирующий код, поэтому можно этого не бояться.

> которое возвращает Integer(от текущего ProgrammState)

Да и возвращал бы я все же TSProgrammState...



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

Форум: "Основная";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
8-34520
ViRUS_1
2003-01-12 04:51
2003.05.12
Как узнать цвет пиксела на экране в определенных координатах?


1-34389
R
2003-04-28 01:28
2003.05.12
Освобождение памяти из под динамически созданной формы


1-34430
Oleg__
2003-04-28 17:07
2003.05.12
WordApplication


14-34552
Style
2003-04-21 20:39
2003.05.12
Delphi Challenge


3-34377
supersan
2003-04-21 16:40
2003.05.12
Получение значения поля только что вставляемой записи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский