Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1192974628
alex_ant
2007-10-21 17:50
2007.11.18
Почему освобождённые объекты не ссылаются на nil


15-1192042472
Galinka
2007-10-10 22:54
2007.11.18
Когда "кило" это 2 в 10-ой, а когда - в 10 в 3-ей?


15-1192430055
Layner
2007-10-15 10:34
2007.11.18
Можно ли в Delphi 2007 писать приложения для PDA WM5?


3-1183544726
Krants
2007-07-04 14:25
2007.11.18
Access, вызов импорта


15-1191982209
Slider007
2007-10-10 06:10
2007.11.18
С днем рождения ! 10 октября 2007 среда





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский