Κατανόηση των τυποποιημένων σταθερών στους Δελφούς

Πότε Δελφοί επικαλείται χειριστή συμβάντων, οι παλιές τιμές των τοπικών μεταβλητών καταστρέφονται. Τι γίνεται αν θέλουμε να παρακολουθούμε πόσες φορές έχει πατηθεί ένα κουμπί; Θα μπορούσαμε να διατηρήσουμε τις τιμές χρησιμοποιώντας μια μεταβλητή επιπέδου μονάδας, αλλά γενικά είναι καλή ιδέα να επιφυλαχτείτε μεταβλητές επιπέδου μονάδας μόνο για την ανταλλαγή πληροφοριών. Αυτό που χρειαζόμαστε συνήθως ονομάζονται στατικές μεταβλητές ή τυπωμένες σταθερές στους Δελφούς.

Μεταβλητή ή σταθερή

Οι τυποποιημένες σταθερές μπορούν να συγκριθούν με τις αρχικές μεταβλητές-μεταβλητές των οποίων οι τιμές καθορίζονται κατά την είσοδο στο μπλοκ τους (συνήθως χειριστής συμβάντων). Μια τέτοια μεταβλητή αρχικοποιείται μόνο όταν αρχίσει να εκτελείται το πρόγραμμα. Μετά από αυτό, η αξία μιας σταθερής διεύθυνσης διατηρείται μεταξύ των διαδοχικών κλήσεων στις διαδικασίες τους.

Η χρήση τυποποιημένων σταθερών είναι ένας πολύ καθαρός τρόπος υλοποίησης αυτόματα προετοιμασμένων μεταβλητών. Για να εφαρμόσουμε αυτές τις μεταβλητές χωρίς τυπωμένες σταθερές, θα χρειαστεί να δημιουργήσουμε μια ενότητα αρχικοποίησης που θα ορίζει την τιμή κάθε αρχικοποιημένης μεταβλητής.

instagram viewer

Μεταβλητές τυποποιημένες σταθερές

Παρόλο που δηλώνουμε τυπωμένες σταθερές στο τμήμα const μιας διαδικασίας, είναι σημαντικό να θυμόμαστε ότι δεν είναι σταθερές. Σε οποιοδήποτε σημείο της αίτησής σας, εάν έχετε πρόσβαση στο αναγνωριστικό για μια σταθερή διόρθωση, θα μπορείτε να τροποποιήσετε την αξία της.

Για να δείτε τυπωμένες σταθερές στην εργασία, τοποθετήστε ένα κουμπί σε μια κενή φόρμα και ορίστε τον ακόλουθο κώδικα στο διαχειριστή συμβάντος OnClick:

διαδικασία TForm1.Button1Κλικ (αποστολέας: TObject); const κλικ: Integer = 1; // δεν είναι μια πραγματική σταθεράξεκινήσει Form1.Caption: = IntToStr (κλικ); κλικ: = κλικ + 1; τέλος; 

Παρατηρήστε ότι κάθε φορά που κάνετε κλικ στο κουμπί, οι προσθήκες αυξάνουν σταθερά.
Τώρα δοκιμάστε τον ακόλουθο κώδικα:

διαδικασία TForm1.Button1Κλικ (αποστολέας: TObject); var κλικ: Ακέραιος αριθμός; ξεκινήσει Form1.Caption: = IntToStr (κλικ); κλικ: = κλικ + 1; τέλος; 

Χρησιμοποιούμε τώρα μια μη αρχικοποιημένη μεταβλητή για τον μετρητή κλικ. Παρατηρήστε την παράξενη αξία στη λεζάντα εντύπων αφού κάνετε κλικ στο κουμπί.

Σταθερά πληκτρολογημένα σταθερά

Πρέπει να συμφωνήσετε ότι η ιδέα των τροποποιήσιμων σταθερών ακούγεται κάπως περίεργη. Σε εκδόσεις 32 bit των Delphi Borland αποφάσισαν να αποθαρρύνουν τη χρήση τους, αλλά να τις υποστηρίξουν για κώδικα κληρονομιών Delphi 1.

Μπορούμε να ενεργοποιήσουμε ή να απενεργοποιήσουμε τις πληκτρολογήσιμες σταθερές με δυνατότητα εγγραφής στη σελίδα Compiler του παραθύρου διαλόγου "Επιλογές έργου".

Αν έχετε απενεργοποιήσει τις Καθορισμένες πληκτρολογημένες σταθερές για ένα συγκεκριμένο έργο, όταν προσπαθείτε να συντάξετε τον προηγούμενο κώδικα, οι Δελφοί θα σας δώσουν το σφάλμα 'Αριστερά δεν μπορεί να εκχωρηθεί' κατά τη σύνταξη. Μπορείτε, ωστόσο, να δημιουργήσετε σταθερά πληκτρολογημένα, δηλώνοντας:

{$ J +}const κλικ: Integer = 1; {$ J-}

Επομένως, ο πρώτος κώδικας παράδειγμα μοιάζει με:

διαδικασία TForm1.Button1Κλικ (αποστολέας: TObject); const{$ J +} κλικ: Integer = 1; // δεν είναι μια πραγματική σταθερά{$ J-}ξεκινήσει Form1.Caption: = IntToStr (κλικ); κλικ: = κλικ + 1; τέλος; 

συμπέρασμα

Εναπόκειται σε εσάς να αποφασίσετε εάν θέλετε οι πληκτρολογημένες σταθερές να είναι μεταβιβάσιμες ή όχι. Το σημαντικό είναι ότι εκτός από το ιδανικό για μετρητές, οι τυπωμένες σταθερές είναι ιδανικές για παραγωγή τα στοιχεία είναι εναλλάξ ορατά ή αόρατα ή μπορούμε να τα χρησιμοποιήσουμε για την εναλλαγή μεταξύ οποιωνδήποτε Boolean ιδιότητες. Οι σταθεροποιημένες σταθερές μπορούν επίσης να χρησιμοποιηθούν μέσα στο χειριστή συμβάντων του TTimer για να παρακολουθήσουν πόσες φορές έχει ακόμη ενεργοποιηθεί.

instagram story viewer