Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.09.25;
Скачать: CL | DM;

Вниз

Как получить кол-во элементов в ординал типе?   Найти похожие ветки 

 
IPranker ©   (2011-06-03 20:58) [0]

Всем привет!

Есть код.
В итоге должна выводиться строка с именами присутствующих элементов. Но на 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;


 
sniknik ©   (2011-06-03 21:32) [1]

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

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


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

var
i: TEnum;
begin

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


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


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


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


 
IPranker ©   (2011-06-04 09:26) [4]


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


Спасибо. :)


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

а лучше так:


var
i: TEnum;
begin

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


 
IPranker ©   (2011-06-04 22:21) [6]


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


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


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


> 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-05 09:51) [8]


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


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


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


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

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


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


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


 
Evgnevius ©   (2011-06-07 10:49) [11]

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

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


 
Anatoly Podgoretsky ©   (2011-06-07 11:05) [12]

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

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


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


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


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


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

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

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



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

Текущий архив: 2011.09.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
2-1307508494
mefodiy
2011-06-08 08:48
2011.09.25
Запрос с LEFT JOIN в SQL Server


2-1307609717
@!!ex
2011-06-09 12:55
2011.09.25
Как установить Charset для всех шрифтов?


2-1307120302
IPranker
2011-06-03 20:58
2011.09.25
Как получить кол-во элементов в ординал типе?


2-1307190079
Alex_C
2011-06-04 16:21
2011.09.25
Совет по использованию критических секций.


15-1307073974
kuzja52
2011-06-03 08:06
2011.09.25
узнать пароль пока открыт браузер