![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование типов данных "Перечисление" и "Множество" [D7, XP]
DQ © (2014-03-28 19:44:00)Пара вопросов.
Вот я объявил:
type ZEnum = (z_first, z_second, ..); ZSet = set of ZEnum;
ПосмотрелSizeOf(ZSet)- он показывает 1 байт. Можно ли заставить его выравнивать до 4-х байт? Временное решение:.. , z_last=31)
Вот я теперь пытаюсь (в Делфи7) проверить:
var ZS: ZSet;
..
ZS:=[z_second];
if (z_first in ZS) then showmessage('z_first');
if (z_second in ZS) then showmessage('z_second');
И при Ctrl+Space нет всплывающих окошек с подсказками какие ещё ZEnum бывают, можно как-то поправить чтоб были?
Игорь Шевченко (2015-07-28 17:16:00) [1]
> Это не мой пост
А зачем ты в чужой ветке создаешь свои посты ? Создай свою ветку.
хзшгк (2015-07-28 11:52:00) [2]так мой пост не мой
Сергей (2015-07-28 11:12:00) [3]Очень, очень невнимательно. Это не мой пост. =/
кгшзх (2015-07-28 10:32:00) [4]Вы невнимательно читали - типы выбирал не я.
Вот я объявил:
type ZEnum = (z_first, z_second, ..); ZSet = set of ZEnum;
ага, я понял.
множество выбирала левая нога.
Сергей (2015-07-28 09:57:00) [5]Вы невнимательно читали - типы выбирал не я.
Что-то не смог нагуглить термин "стриминг сета/множества"... Что вы имели ввиду?
кгшзх (2015-07-26 15:14:00) [6]а еще если выбирать типы не от балды, то проблем лишних не будет.
если все влезает в dword, и если в функцию надо передавать 4 байта, то и хранить надо в дворде.
Rouse_ (2015-07-25 17:57:00) [7]Как вариант, можно делать стриминг сета и передавать его, тогда обойдещь проблему с размерностью
Rouse_ (2015-07-25 17:55:00) [8]Абсолютно верно, памятью, выделенной под множество, нужно управлять количеством бит, с которыми оно оперирует, поэтому для 4 байт нужно последнму элементу выставить z_last = 31
Сергей (2015-07-24 18:03:00) [9]Читайте как "требуется". В классах есть read-only property, которые возвращают Set Of TEnum***.
Есть функция экспортированная из DLL, принимающая одним из входящих Cardinal. Требуется передавать туда эти property.
У одного класса SizeOf(property)=4. И прекрасно работает через Integer(AnObject.property)
У другого класса SizeOf(property)=1. У третьего SizeOf(property)=2. И тогда выдаёт "[Error] Invalid typecast". Как мне сделать typecast?
Нашёл эту тему, пробовал как описано со своим множеством - сработало как должно. Да только не могу влезть в объявление типа и добавить "z_last=31".
кгшзх (2015-07-24 12:24:00) [10]смысл ровно такой же как и у тебя.
"хочу передать множество туда где ждут кардинал" = "хочу анжолину жоли, но анжолина хочет бредапита"
хотеть не смертельно в обоих случаях. хоти на здоровье.
Сергей (2015-07-24 12:15:00) [11]То что вы пишете не имеет смысла. Флуд какой-то.
Вы либо знаете как сделать, либо нет. Видимо не знаете? Чего тогда вообще писать? =/
кгшзх (2015-07-24 12:10:00) [12]хочу анжолину жоли, а анжолина хочет бредапита
Сергей (2015-07-24 10:16:00) [13]Хочу множество в функцию передать. А функция хочет Cardinal.
icWasya (2015-07-24 09:10:00) [14]
procedure Include( var S: set of T; X: T );
procedure Exclude( var S: set of T; X: T );
кгшзх (2015-07-24 08:35:00) [15]> Мне не важно сколько максимум может достигнуть, надо чтоб
> в SizeOf() было 4 ровно.
А мне надо чтобы SizeOf(Char) было ровно 1966
И что делать если чар это байт, а множество это 256 бит?
Сергей (2015-07-24 07:13:00) [16]Так как повлиять на размер set of enum?
Германн (2014-03-30 02:48:00) [17]Удалено модератором
DQ (2014-03-29 16:06:00) [18]Всё у меня достаточно. Когда придумывали ООП полюбому тоже кто-то ворчал мол выдумываете монстров потому что базовых знаний процедурного программирования недостаточно. Всегда есть куда совершенствовать.
>> Вот так бы и сказал. И привел бы тот "готовый код" и сказал бы что тебя в нём не устраивает.
Откройте тот же MSDN, любой проект из Windows SDK Examples. Мне прекрасно всё понятно. Но хочу сделать иначе чтоб было лучше.
>> но я про [31].
Не могу ответить. Надо думать.
это все... (2014-03-29 13:11:00) [19]А причем тут вообще размер перечисления.
да при том при самом размер перечисления тут.
Германн (2014-03-29 02:26:00) [20]Удалено модератором