|
|

Watch, Follow, &
Connect with Us

 Sample Code ``` type // Here are some examples of declaring set types. // A variable of TMyMonth can take one and only one of // one of its members. TMyMonth = (Jan, Feb, Mar, Apr, May); // TMyMonthSet can be an empty set (no months in it), or // contain any combination of the above months. TMyMonthSet = set of TMyMonth; // TMySubMonthSet is a subset of the above set, only able // to take on the first 3 months TMySubMonthSet = set of Jan..Mar; // TMyIntSet can be an empty set, or any combination of integers // in the range of 1 to 15. TMyIntSet = set of 1..15; // TMySubIntSet can be an empty set, or any combination of integers // in the range of 1 to 5. TMySubIntSet = set of 1..5; // Here are some examples of declaring set variables var MyMonth: TMyMonth; // can only be one month (NOT a set) MyMonthSet: TMyMonthSet; // can be more than one month MyIntSet: TMyIntSet; // can be a combination of ints from 1 to 15 only begin // The TMyMonth type can only take on one value at a time MyMonth := May; // Sets can take on more than one value, and notice the use of square // brackets MyMonthSet := [Jan, Mar, May]; // MySubMonths can only take the values Jan..Mar. If you try to set it // to May, you won't get a compile time error, but the set will be empty. MyIntSet := [20]; // 20 is past the range for the set..so this should do nothing! if MyIntSet = [] then ShowMessage('MyIntSet is empty! (as expected...)'); // Here are some common operations you can do with sets: // + Union operator MyMonthSet := MyMonthSet + [Feb, Apr]; // Add 2 months to the set // - Difference operator MyMonthSet := MyMonthSet - [MyMonth]; // Remove May from the set MyMonthSet := MyMonthSet - [Jan..Apr]; // Remove Jan through Apr // The set should now be empty (use the equality operator = to test sets) if MyMonthSet = [] then ShowMessage('MyMonthSet is empty! (as expected...)'); // * Intersection operator MyMonthSet := [Jan, Feb] * [Jan, Apr]; if MyMonthSet = [Jan] then ShowMessage('MyMonthSet is Jan! (as expected...)'); // <= Subset operator if [Jan, Apr] <= [Jan..Apr] then ShowMessage('[Jan, Apr] <= [Jan..Apr], as expected...'); // <= Subset operator is the opposite of the above // To test if an ordinal is in the set, us the "in" operator if Jan in [Jan..Feb] then ShowMessage('Jan in set [Jan..Feb]'); end. ```