Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.027 c
9-1139701704
Bogdan1024
2006-02-12 02:48
2006.12.10
Armed Man v1.07 Last Call


15-1163975713
Фара
2006-11-20 01:35
2006.12.10
Можно ли на Дельфи написать плагин для FAR а ?


2-1163948920
windows
2006-11-19 18:08
2006.12.10
timer - handle - winapi


15-1163838143
SerJaNT
2006-11-18 11:22
2006.12.10
aDSL модем


15-1163994028
Slider007
2006-11-20 06:40
2006.12.10
С днем рождения ! 19 ноября




   Наверх