@Machina - zamiast pytać to trzeba było najpierw przeczytać artykuł na temat zbiorów i typów wyliczeniowych z jakiegokolwiek kursu kodzenia w Delphi - np. Kompendium - Język Object Pascal - Zbiory; Na przyszłość pamiętaj, żeby najpierw przyswoić teorię, a potem jeśli coś nie wychodzi to pytać na forum;
Jeśli chodzi o wspomniane przez kolegów wyżej prefiksy - warto je stosować, bo dzięki temu łatwiej można się zorientować w kodzie; Osobiście takie typy zadeklarowałbym w poniższy sposób:
type
TTurnEnum = (teNone, teLeft, teRight);
type
TLaneTurnSet = set of TTurnEnum;
dlatego, żeby wiedzieć po samym identyfikatorze jakiego typu będzie dana zmienna, oraz jakie wartości są dostępne dla tego typu; Stąd identyfikatory wyliczeń zakończyłem słówkiem Enum
, a zbiory Set
(podobnie jak np. macierze zakańczam słówkiem Arr
); Prefiks wartości wyliczeń ustalam od nazwy typu TurnE*num* - czyli teNone
, teLeft
i teRight
, dzięki czemu chcąc dodać do zmiennej ziorowej jakąś wartość od razu wiem które są dostępne, a jeśli nie pamiętam wszystich (bo może być ich 255
) to wystarczy podać prefiks i skorzystać z Code Completion
; Możesz także stosować się do notacji węgierskiej - uważam, że takie zabiegi zwiększają czytelność kodu i pomagają go szybciej zrozumieć;
Do dodawania/usuwania wartości do/ze zbioru możesz wykorzystać procedury odpowiednio Include oraz Exclude jednak trzeba zauważyć, że nie możesz ich wykorzystać do modyfikowania właściwości (formularzy/kontrolek); Próba kompilacji programu z takim wykorzystaniem procedury:
Include(Button1.Anchors, akTop);
{ lub }
Include(Form1.Font.Style, fsBold);
zakończy się błędem [Error] Unit1.pas(XX): Left side cannot be assigned to
.