Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
TLine = record
X1, Y1, X2, Y2: smallint;
Attr: array [0 .. 7] of byte;
end;
{rail:
Attr[0]: Quality
Attr[1]: ********
||Weight of Station
||10 = Station; 11 = Big Station
Attr[2]: Count of passengers
Real count = Attr[2] * (Attr[1] and $3F) / 63;
Attr[3]: ****0100
||||
|||for Selected
||for "crossrail"
for MoveEndSel
===========================================
bridge:
Attr[0]: Quality
Attr[1]: ********
||
Z of ends
Attr[2]:
Attr[3]: ****1100
===========================================
3d-object:
Attr[0]: Number
Attr[1-2]: RandSeed
Attr[3]: ****1111
===========================================
Attr[4..7] reserved, but not used
}
Это я был вынужден написать себе такую памятку после попыток понять свой код, начатый на 3 курсе.
В будущем я учёл свои ошибки при написании http://govnokod.ru/5261
если уж так экономите память (ну мало ли - вдруг очень надо) - хотя бы packed record.
кстати, для задачи, где подобных объектов может быть 50-100М, придется еще не так извращаться... ну или забить на 32-битную реализацию.
Я с Турбо Паскаля начинал, поэтому и приучился по битам всякие флаги распихивать. Потом, после перехода на Дельфи, не сразу отучился.
И как тут множества помогут?
а паскале с bitfields нормально не поработаешь
байтоёбство
кстати, для задачи, где подобных объектов может быть 50-100М, придется еще не так извращаться... ну или забить на 32-битную реализацию.