Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.09.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





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


2-1307121220
Gu
2011-06-03 21:13
2011.09.25
Png модули


1-1265708544
LightGreen
2010-02-09 12:42
2011.09.25
Вызов inherited определённого базового класса


1-1267021784
nokla user
2010-02-24 17:29
2011.09.25
Окно копирования windows


15-1306812830
boriskb
2011-05-31 07:33
2011.09.25
Китай выиграл ЧМ по программированию





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