Главная страница
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.49 MB
Время: 0.011 c
1-1267021784
nokla user
2010-02-24 17:29
2011.09.25
Окно копирования windows


6-1241804128
DVM
2009-05-08 21:35
2011.09.25
Определить режим работы сокета: блок. или неблок. в Winsock


11-1209036425
zldo
2008-04-24 15:27
2011.09.25
Form.Show


15-1305557376
Kerk
2011-05-16 18:49
2011.09.25
Подскажите с настройкой фильтров Outlook


15-1306408784
OW
2011-05-26 15:19
2011.09.25
Про ценообразование фруктов и овощей.