Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование типов данных "Перечисление" и "Множество" [D7, XP]


Страницы:   1 2 3

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]

Удалено модератором


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо