Форум: "Начинающим";
Текущий архив: 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