Mal angenommen, Du brauchst einen Datentyp mit einer bestimmten Anzahl möglicher Werte (z.B. einen erweiterten Bool' schen Typ mit 3 Zuständen). Dann kannst Du den entweder als z.B. Byte deklarieren oder Dir einen eigenen Datentyp erstellen, der diese 3 möglichen Zustände definiert.
type TFemaleBool = (fbYes, fbNo, fbMayBe);
Intern wird das als Zahlenwert gespeichert, aber das muss Dich im Normalfall nicht interessieren. Nun kannst Du Variablen, Parameter usw. deklarieren, die von diesem Typ sein müssen.
function Wuppdi(MyBool: TFemaleBool): integer;
Einer der großen Vorteile ist, dass man bei vernünftiger Benennung sofort erkennen kann, was hier eigentlich erwartet wird.