Ενα από Γλώσσα Delphi τα χαρακτηριστικά που δεν υπάρχουν σε άλλες σύγχρονες γλώσσες είναι η έννοια των συνόλων.
Δελφούςστοιχειοθετώ είναι μια συλλογή αξιών της ίδιας κανονικού τύπου.
Ένα σύνολο ορίζεται με τη χρήση του σύνολο απο λέξη-κλειδί:
Οι τύποι συνόλων καθορίζονται συνήθως με υποδιαιρέσεις.
Στο παραπάνω παράδειγμα, το TMagicNumber είναι ένας προσαρμοσμένος τύπος υποδιατάγματος που επιτρέπει μεταβλητές τύπου TMagicNumber να λαμβάνουν τιμές από 1 έως 34. Με απλά λόγια, ένας τύπος δευτερεύουσας σειράς αντιπροσωπεύει ένα υποσύνολο των τιμών σε έναν άλλο σειριακό τύπο.
Πιθανές τιμές του τύπου set είναι όλα τα υποσύνολα του τύπου βάσης, συμπεριλαμβανομένου του κενού συνόλου.
Ένας περιορισμός σε σύνολα είναι ότι μπορούν να χωρέσουν μέχρι και 255 στοιχεία.
Στο παραπάνω παράδειγμα, ο τύπος συνόλου TMagicSet είναι ένα σύνολο στοιχείων TMagicNumber - ακέραιοι αριθμοί από 1 έως 34.
Η δήλωση TMagicSet = σύνολο TMagicNumber ισούται με την ακόλουθη δήλωση: TMagicSet = σύνολο 1..34.
Ορισμός μεταβλητών τύπου
Στο παραπάνω παράδειγμα, οι μεταβλητές emptyMagicSet, oneMagicSet και anotherMagicSet είναι σύνολα TMagicNumber.
Προς το εκχωρήσετε μια τιμή σε μια μεταβλητή τύπου set, χρησιμοποιήστε τις αγκύλες και απαριθμήστε όλα τα στοιχεία του σετ. Οπως λέμε:
Σημείωση 1: κάθε μεταβλητή τύπου set μπορεί να κρατήσει το κενό σετ, που υποδηλώνεται με [].
Σημείωση 2: Η σειρά των στοιχείων σε ένα σετ δεν έχει νόημα, ούτε είναι σημαντικό να συμπεριληφθεί ένα στοιχείο (τιμή) δύο φορές σε ένα σετ.
Η λέξη IN
Για να ελέγξετε εάν ένα στοιχείο περιλαμβάνεται στο σύνολο (μεταβλητή) χρησιμοποιήστε το ΣΕ λέξη-κλειδί:
Ορίστε τους χειριστές
Με τον ίδιο τρόπο μπορείτε να αθροίσετε δύο αριθμούς, μπορείτε να έχετε ένα σύνολο που είναι το άθροισμα δύο σετ. Με σύνολα της εκδήλωσής σας υπάρχουν περισσότεροι φορείς:
- + επιστρέφει την ένωση δύο συνόλων.
- - επιστρέφει τη διαφορά δύο συνόλων.
- * επιστρέφει τη διασταύρωση δύο συνόλων.
- = επιστροφή αληθής αν δύο σύνολα είναι ίσα - έχουν το ίδιο στοιχείο.
- <= επιστρέφει true αν η πρώτη ομάδα είναι ένα υποσύνολο της δεύτερης ομάδας.
- > = επιστρέφει αληθές εάν το πρώτο σετ είναι ένα υπερκείμενο του δεύτερου σετ.
- <> επιστρέφει true αν δύο σύνολα είναι μη ταυτόσημα.
- Σε επιστροφή ισχύει εάν ένα στοιχείο περιλαμβάνεται στο σετ.
Ακολουθεί ένα παράδειγμα:
Θα εκτελεστεί η διαδικασία ShowMessage; Εάν ναι, τι θα εμφανιστεί;
Εδώ είναι η εφαρμογή της λειτουργίας DisplayElements:
Συμβουλή: ναι. Εμφανίζεται: "18 | 24 |".
Ακεραίες, χαρακτήρες, Booleans
Φυσικά, κατά τη δημιουργία των καθορισμένων τύπων δεν περιορίζεστε σε ακέραιες τιμές. Οι σειριακοί τύποι Delphi περιλαμβάνουν τιμές χαρακτήρων και boolean.
Για να αποτρέψετε τους χρήστες να πληκτρολογούν άλφα κλειδιά, προσθέστε αυτή τη γραμμή στο OnKeyPress ενός ελέγχου επεξεργασίας:
Ορίζει με απαρίθμηση
Ένα κοινά χρησιμοποιούμενο σενάριο στον κώδικα Delphi είναι να αναμειχθεί τόσο οι απαριθμημένοι τύποι όσο και οι τύποι συνόλων.
Ακολουθεί ένα παράδειγμα:
Ερώτηση: θα εμφανιστεί το μήνυμα; Απάντηση: όχι :(
Ορίζει τις ιδιότητες ελέγχου Delphi
Όταν χρειαστεί να εφαρμόσετε "έντονα" στη γραμματοσειρά που χρησιμοποιείται στους ελέγχους TEdit, χρησιμοποιείτε είτε τον Object Inspector είτε τον ακόλουθο κώδικα:
Η ιδιότητα Στυλ γραμματοσειράς είναι μια ιδιότητα τύπου τύπου! Δείτε πώς ορίζεται:
Έτσι, ένας απαριθμημένος τύπος TFontStyle χρησιμοποιείται ως τύπος βάσης για τον καθορισμένο τύπο TFontStyles. Η ιδιότητα στυλ της κλάσης TFont είναι τύπου TFontStyles - επομένως μια ιδιότητα τύπου set.
Ένα άλλο παράδειγμα περιλαμβάνει το αποτέλεσμα της λειτουργίας MessageDlg. Μια λειτουργία MessageDlg χρησιμοποιείται για να εμφανίσει ένα πλαίσιο μηνύματος και να αποκτήσει την απάντηση του χρήστη. Μία από τις παραμέτρους της συνάρτησης είναι η παράμετρος Κουμπιά τύπου TMsgDlgButtons.
Το TMsgDlgButtons ορίζεται ως σύνολο (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp).
Αν εμφανίσετε ένα μήνυμα στο χρήστη που περιέχει τα κουμπιά Ναι, OK και Ακύρωση και θέλετε να εκτελέσετε κάποιο κωδικό, αν κάνατε κλικ στο κουμπί Ναι ή Ok, μπορείτε να χρησιμοποιήσετε τον επόμενο κωδικό:
Τελική λέξη: τα σετ είναι υπέροχα. Τα σύνολα ενδέχεται να εμφανίζουν σύγχυση σε ένα Αρχάριος των Δελφών, αλλά μόλις αρχίσετε να χρησιμοποιείτε μεταβλητές τύπου set, θα διαπιστώσετε ότι παρέχουν πολύ περισσότερο από ότι ακούστηκε στην αρχή.