Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
ВнизПеречисляемый тип. Найти похожие ветки
← →
AleKo (2007-10-23 08:36) [0]Добрый день.
Наверно детский вопрос.
Имеются константы типа Char
Const1 = ‘0’
Const2 = ‘1’
Const3 = ‘+’
Как объявить тип, переменная которого принимала бы одно из значений Const1 или Const2 или Const3.
← →
Palladin © (2007-10-23 08:54) [1]c:char
← →
Reindeer Moss Eater © (2007-10-23 09:02) [2]type tmytype = (const1,const2,const3);
только константы надо объявить действительно как char, а не string, как у тебя.
← →
AleKo (2007-10-23 09:04) [3][Pascal Error] Unit1.pas(28): E2004 Identifier redeclared: "epNotEnter"
[Pascal Error] Unit1.pas(28): E2004 Identifier redeclared: "epNotEnter2"
[Pascal Error] Unit1.pas(28): E2004 Identifier redeclared: "epAlwaysEnter"
[Pascal Error] Unit1.pas(28): E2004 Identifier redeclared: "epInherited"
← →
AleKo (2007-10-23 09:15) [4]Const
epNotEnter : Char = "0";
epNotEnter2 : Char = " ";
epAlwaysEnter : Char = "1";
epInherited : Char = "2";
epInheritedAndAlwaysEnter : Char = "3";
type
TEnterryProp = (epNotEnter,epNotEnter2,epAlwaysEnter,epInherited,epInheritedAndAlwaysEnter);
Если так, то не работает.
← →
Reindeer Moss Eater © (2007-10-23 09:24) [5]Тогда просто перечислимый тип + функция трансляции членов в символы
← →
AleKo (2007-10-23 09:31) [6]
> Тогда просто перечислимый тип + функция трансляции членов
> в символы
Это понятно.
Хочется определит значения в одном месте и пользоваться.
Я хотел для читаемости кода назвать константы исходя из их значений, так как "0" или "1" это не информативно.
← →
Reindeer Moss Eater © (2007-10-23 09:32) [7]Ну так в чем проблемы?
В коде будут символические константы нового типа.
А когда нужны будут символы, вызывай функцию.
← →
AleKo (2007-10-23 09:40) [8]Вы предлагаете так:
type
TEnterryProp = (epNotEnter,epNotEnter2,epAlwaysEnter,epInherited,epInheritedAndAlwaysEnter);
Begin
....
Функция(Поле) = epNotEnter;
....
end;
← →
Reindeer Moss Eater © (2007-10-23 09:48) [9]Я предлагаю просто
type
TEnterryProp = (epNotEnter,epNotEnter2,epAlwaysEnter,epInherited,epInheritedAndAlwaysEnter);
А в случаях, когда нужен сам символ я предлагаю
function blablabla(AElement : TEnterryProp) : char;
begin
case AElement of
epNotEnter : result := "1";
...
end;
end;
← →
Leonid Troyanovsky © (2007-10-23 09:50) [10]
> AleKo (23.10.07 09:40) [8]
const
EnterryPropValues: array [TEnterryProp] of Char = "0 123";
--
Regards, LVT.
← →
AleKo (2007-10-23 09:57) [11]
> const EnterryPropValues: array [TEnterryProp] of Char =
> "0 123";
А зачем мне массив, мне массив не нужен, мне перечисляемый тип нужен.
← →
Reindeer Moss Eater © (2007-10-23 09:58) [12]этот массив - замена моего кейса
← →
Kolan © (2007-10-23 09:59) [13]> Reindeer Moss Eater © (23.10.07 09:48)
> Я предлагаю просто
Я тоже голосую заcase AElement of
ёпНеВходить : result := "1";
:)
← →
Leonid Troyanovsky © (2007-10-23 10:08) [14]
> AleKo (23.10.07 09:57) [11]
> А зачем мне массив, мне массив не нужен, мне перечисляемый
> тип нужен.
TEnterryProp - перечислимый тип.
Определись, чего ты хочешь.
--
Regards, LVT.
← →
AleKo (2007-10-23 10:28) [15]Я хотел определить тип который позволит мне делать так
Const1 = ‘0’
Const2 = ‘1’
Const3 = ‘+’
Type
NewType = (Const1 или Const2 или Const3)
Var
Variable : NewType;
Variable := Const1;
if Поле = Variable then;
if Поле = Const2 then;
if Variable = Const3 then;
Variable := Поле;
Контролировать Variable и не допустить присвоение например "9".
Поле типа Char.
← →
Reindeer Moss Eater © (2007-10-23 10:31) [16]тебе все уже подсказали.
Контролировать Variable и не допустить присвоение например "9".
не использовать в коде литералы и не допустить присвоения "9" символьному типу - это две совершенно разные вещи.
← →
Сусл © (2007-10-23 10:57) [17]2автар, я думаю, что решить задачу именно как хочешь ты незя.
← →
Palladin © (2007-10-23 16:32) [18]вот вот, незя, потому и char, а контроль над содержимым char полностью лежит на программисте
← →
имя (2007-10-28 01:40) [19]Удалено модератором
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.053 c