Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить кол-во элементов в ординал типе? [D7, WinXP]


IPranker ©   (2011-06-03 20:58:00) 

Всем привет!

Есть код.
В итоге должна выводиться строка с именами присутствующих элементов. Но на High(TEnum) do пишет "Incompatible types".
Как получить сабж?


type
 TEnum = (e1, e2, e3, e4, e5, e6);

var
 Enum: set of TEnum;

procedure TForm1.FormCreate(Sender: TObject);
const
 X_ENUM: array [TEnum] of string = ('e1', 'e2', 'e3', 'e4', 'e5', 'e6');
var
 i: LongInt;
begin
 Enum:= Enum + [e2];
 Enum:= Enum + [e6];

 For i:= 1 to High(TEnum) do // <- Incompatible types.
   If TEnum(i) in Enum then Caption:= Caption + ', ' + X_ENUM[TEnum(i)];
end;


Омлет   (2011-06-08 09:26:00) [1]

> _Юрий   (04.06.11 00:27) [2]

Вместо TEnum(i), можно просто i


_Юрий   (2011-06-07 20:41:00) [2]


> Anatoly Podgoretsky ©   (07.06.11 11:05) [12]


Если сделать не функцию, а процедуру - то все правильно.
Как бэ не геттер, а сеттер


Anatoly Podgoretsky   (2011-06-07 11:05:00) [3]

> Evgnevius  (07.06.2011 10:49:11)  [11]

Не писать надо так
Function NextDay:
  Sleep(86400)
  ...


Evgnevius   (2011-06-07 10:49:00) [4]

Хотя, правильнее наверное вот так:

Count := 0;
for I := Low(TEnum) to High(TEnum) do
 Inc(Count);


Evgnevius   (2011-06-07 10:45:00) [5]


for i := 0 to SizeOf(TEnum) - 1 do


Германн   (2011-06-05 18:32:00) [6]


> Я говорил про:
> for i in Enum do

И я тоже про это.


IPranker   (2011-06-05 09:51:00) [7]


> Германн ©   (05.06.11 06:10) [7]


Я говорил про:
for i in Enum do


Германн   (2011-06-05 06:10:00) [8]


> IPranker ©   (04.06.11 22:21) [6]
>
>
> > _Юрий   (04.06.11 15:50) [5]
>
>
> Delphi 7 такого нет.
>

Значит нужно читать книжки, чтобы понять разницу между _Юрий   (04.06.11 00:27) [2] и _Юрий   (04.06.11 15:50) [5]


IPranker   (2011-06-04 22:21:00) [9]


> _Юрий   (04.06.11 15:50) [5]


Delphi 7 такого нет.


_Юрий   (2011-06-04 15:50:00) [10]

а лучше так:


var
i: TEnum;
begin

for i in Enum do
 Caption:= Caption + ', ' + X_ENUM[TEnum(i)];


IPranker   (2011-06-04 09:26:00) [11]


> _Юрий   (04.06.11 00:27) [2]


Спасибо. :)


Германн   (2011-06-04 01:20:00) [12]


> For i:= 1 to High(TEnum) do // <- Incompatible types.
>  If TEnum(i) in Enum then Caption:= Caption + ', ' + X_ENUM[TEnum(i)];


Тут не только "Incompatible types". Тут полное незнание enumerated типов. Нужно читать справку или книжки.


_Юрий   (2011-06-04 00:27:00) [13]

var
i: TEnum;
begin

For i:= Low(i) to High(i) do
  If i in Enum then Caption:= Caption + ', ' + X_ENUM[TEnum(i)];


sniknik   (2011-06-03 21:32:00) [14]

> пишет "Incompatible types".
верь ему

> Как получить сабж?
например, поменяй тип на "compatible"... (исправь ошибку)


Наверх

Титульная страница Поиск, карта сайта Написать письмо