![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить кол-во элементов в ординал типе? [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"... (исправь ошибку)