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

Вниз

Количество элементов ....   Найти похожие ветки 

 
novice_man ©   (2006-11-20 10:44) [0]

Как определить количество элементов в структуре типа TMyStructure = (msElement1, msElement2, ..., msElementN); запись типа SizeOf(TMyStructure) возвращает размер 1 байт.


 
StriderMan ©   (2006-11-20 10:51) [1]


> Как определить количество элементов в структуре типа TMyStructure
> = (msElement1, msElement2, ..., msElementN);

правильнее это называть перечислением.
а кол-во элементов можно определить так

Size := ord(high(TMyStructure))


 
novice_man ©   (2006-11-20 10:52) [2]

StriderMan ©   (20.11.06 10:51) [1]
Сапсибо.


 
Anatoly Podgoretsky ©   (2006-11-20 13:19) [3]

> StriderMan  (20.11.2006 10:51:01)  [1]

High(TMyStructure) - Low(TMyStructure) + 1


 
RASkov   (2006-11-20 14:07) [4]

> [3] Anatoly Podgoretsky ©   (20.11.06 13:19)

Low(TMyStructure) так это всегда 0 вернет. Перечисляемый тип, это вроде как поименованные константы типа Word.
Хотя по логике оно так и надо узнавать количество - от максимального отнимать минимальное значение.


 
KilkennyCat ©   (2006-11-20 14:09) [5]

> Low(TMyStructure) так это всегда 0 вернет

не всегда.


 
Джо ©   (2006-11-20 14:17) [6]

> [4] RASkov   (20.11.06 14:07)
> > [3] Anatoly Podgoretsky ©   (20.11.06 13:19)
>
> Low(TMyStructure) так это всегда 0 вернет

TMyStructure = (msElement1=2, msElement2=4)


 
Джо ©   (2006-11-20 14:20) [7]

Впрочем с таким перечислением как [6] и [3] работать не будет.


 
Anatoly Podgoretsky ©   (2006-11-20 14:29) [8]

> RASkov  (20.11.2006 14:07:04)  [4]

> Low(TMyStructure) так это всегда 0 вернет.

Не говори ерунды


 
Anatoly Podgoretsky ©   (2006-11-20 14:30) [9]

> Джо  (20.11.2006 14:20:07)  [7]

> Впрочем с таким перечислением как [6] и [3] работать не будет.
[3] будет


 
Джо ©   (2006-11-20 14:42) [10]

> [9] Anatoly Podgoretsky ©   (20.11.06 14:30)
> [3] будет

type
 TMyStructure = (msElement1=10, msElement2=100);
begin
 ShowMessage (IntToStr(
   Ord( Ord(High(TMyStructure)) - Ord(Low(TMyStructure)) + 1)
 )); // Выводит "91".
end;


 
StriderMan ©   (2006-11-20 14:49) [11]


> Anatoly Podgoretsky ©   (20.11.06 13:19) [3]
> High(TMyStructure) - Low(TMyStructure) + 1

тогда уж
ord(High(TMyStructure)) - ord(Low(TMyStructure)) + 1.
иначе компилятор заругаеццо.

В общем случае [3] это конечно правильнее, но от
TMyStructure = (msElement1=3, msElement2=11)не спасет.


 
Anatoly Podgoretsky ©   (2006-11-20 14:55) [12]

> Джо  (20.11.2006 14:42:10)  [10]

Все правильно, данное перечисление состоит из 91 члена, два явных и 89 анонимных.
Есть вопросы?

x := TMyStructure(11);


 
Anatoly Podgoretsky ©   (2006-11-20 14:56) [13]

> StriderMan  (20.11.2006 14:49:11)  [11]

Читаем отцов основателей, в справке все расписано.


 
Anatoly Podgoretsky ©   (2006-11-20 14:59) [14]

> Anatoly Podgoretsky  (20.11.2006 14:55:12)  [12]

for x := Low(TMyStructure) to High(TMyStructure) do ShowMessage(


 
StriderMan ©   (2006-11-20 14:59) [15]


> Anatoly Podgoretsky ©

как всегда на коне :)

я думаю такая экзотика как неявные члены перечислений автору не понадобится. так что ord(high(TMyStructure)) + 1 хватит за глаза.

ЗЫ: в [1] я забыл +1.


 
Джо ©   (2006-11-20 15:10) [16]

> [12] Anatoly Podgoretsky ©   (20.11.06 14:55)
> Есть вопросы?

Вопросов нет, Вы правы.



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

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

Наверх




Память: 0.5 MB
Время: 0.035 c
15-1164182146
Уважаемый Ламер
2006-11-22 10:55
2006.12.10
Не работают breakpoints


2-1164013547
john81
2006-11-20 12:05
2006.12.10
BDE


2-1164165854
lobach
2006-11-22 06:24
2006.12.10
Как узнать какой пункт ListBox а сейчас выбран?


8-1136672981
Гость_
2006-01-08 01:29
2006.12.10
Поворот изображения


15-1164011476
Gavrila
2006-11-20 11:31
2006.12.10
TTreeView: как правильно использовать метод AddObject?