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

Вниз

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

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

Наверх




Память: 0.47 MB
Время: 0.045 c
2-1164467384
Strate
2006-11-25 18:09
2006.12.10
Непонятный Access Violation...


2-1164221577
TObject2k
2006-11-22 21:52
2006.12.10
интерфейсы


4-1153835150
Kolan
2006-07-25 17:45
2006.12.10
Работа с TApdComPort(Async Professional) и с RS485...


2-1164224668
Romal
2006-11-22 22:44
2006.12.10
что быстрее?


2-1164458040
i-am-vladko
2006-11-25 15:34
2006.12.10
message onDblClick





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