Τύποι Δεδομένων της VBScript (ο τύπος Variant και οι Υποτύποι)

Τύποι Δεδομένων της VBScript (ο τύπος Variant και οι Υποτύποι)

Τύποι Δεδομένων της VBScript – Η VBScript ως scripting γλώσσα, διαθέτει ΜΟΝΟ ENA βασικό τύπο δεδομένων, τον τύπο Variant. Κάθε μεταβλητή και σταθερά είναι αυτού του τύπου και κάθε συνάρτηση επιστρέφει τιμή τέτοιου τύπου. Ανάλογα με την καταχώριση τιμών σε μια μεταβλητή τύπου Variant, η πληροφορία αποθηκεύεται και επεξεργάζεται διαφορετικά από τον τύπο αυτό. Επειδή είναι ο μοναδικός τύπος της γλώσσας δεν απαιτείται να αναφερθεί στη σύνταξη του ορισμού μια μεταβλητής ή μια συνάρτησης γιατί είναι αυτονόητο.

Υποτύποι: Οι Τύποι Δεδομένων της VBScript

Ο τύπος Variant είναι ο μοναδικός βασικός τύπος της VBScript. Αυτός ο τύπος μπορεί να χειρισθεί οποιαδήποτε είδους πληροφορία. Συμπεριφέρεται διαφορετικά ανάλογα με τη τιμή που τον αρχικοποιεί. Αυτό επιτυγχάνεται με τους “υποτύπους”. Οι υποτύποι είναι όπως οι βασικοί τύποι στις περισσότερες γλώσσες (Integer, Boolean, Char, …) αλλά δεν γίνεται να αναφερθούμε στους υποτύπους (δηλαδή να γράψουμε το αναγνωριστικό τους στο πρόγραμμα). Τους χρησιμοποιούμε έμμεσα μέσω του τύπου Variant δίνοντας τιμές στις μεταβλητές και καλώντας τις κατάλληλες μεθόδους. Συγκεκριμένα οι 16 παρακάτω τύποι υποστηρίζονται από τον τύπο Variant και αποτελούν τους υποτύπους της VBScript:

EmptySingleStringVariant
NullDoubleObjectDataObject
IntegerCurrencyErrorByte
LongDateBooleanArray

Όταν η τιμή μιας μεταβλητής είναι λίστα μεταβλητών, τότε ο υποτύπος της είναι και Array (ο τελευταίος) και αυτός της λίστας. Όταν η λίστα έχει τιμές διαφορετικού υποτύπου πρόκειται για Array υποτύπου Variant. Έτσι η μεταβλητή είναι και υποτύπου Array και υποτύπου Variant.

Σημείωση: Μπορεί να χρησιμοποιηθεί η συνάρτηση VarType για να διαπιστωθει ποιος είναι ο υποτύπος μια μεταβλητής, η οποία δίνεται ως μοναδική παράμετρος σε αυτή τη συνάρτηση, από την ακέραια τιμή που επιστρέφεται και που αντιστοιχεί σε έναν από τους παραπάνω υποτύπους.

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

Δηλαδή ο τύπος Variant είναι σαν πολλοί τύποι μαζί. Θα μπορούσαμε να πούμε ότι οι τύποι δεδομένων της VBScript είναι οι παραπάνω στους οποίους αναφερόμαστε μέσω του τύπου Variant.

Τύποι Δεδομένων της VBScript  – Μετατροπές Υποτύπων

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

  • CDbl
  • CSng
  • CInt
  • CLng
  • Hex

Οι παραπάνω συναρτήσεις μπορούν να μετατρέψουν και μεταβλητές υποτύπου String σε αριθμό αν αναπαριστούν σωστά τον αριθμό. Αν δε τους δοθεί σωστή είσοδο δεδομένων μπορεί να γίνει υπερχείλιση (Overflow) ή λάθος και να σταματήσει η εκτέλεση. Επίσης όταν ένας δεκαδικός υποτύπος μετατρέπεται σε ακέραιο, στρογγυλοποιείται.

Παράδειγμα:

dim var1, var2, var3
msgbox VarType(var1)
' Επιστρέφει 0 δηλαδή ο υποτύπος είναι Empty '

var1 = 123 : var2 = "abc" : var3 = #1/8/2016#
msgbox ("Οι υποτύποι των var1, var2, var3 είναι " & varType(var1) & ", " & varType(var2) & ", " & varType(var3))
' Οι τιμές για τους υποτύπους Integer, String, Date '

var3 = "456" : msgbox VarType(var3) 
' Ο τύπος αλλάζει όταν γίνεται καταχώριση ξανά τιμής άλλου υποτύπου '

msgbox(var1 & " + " & var3 & " = " & var1 + var3)
msgbox(varType(var1) & ", " & varType(var3))
' Εδώ η τιμή του var3 άλλαξε απο String σε Integer για να γίνει η πρόσθεση '
' Δεν άλλαξε όμως ο υποτύπος της μεταβλητής var3 '

msgbox(var1 & var2)
' Εδώ η τιμή της var1 μετατράπηκε σε String για να συνενωθεί με τη var2 '
' Οι αριθμητικές τιμές μετατρέπονται σε String για να εμφανιστούν

var3 = CInt(var3) : msgbox(varType(var3))
' Εδώ ο υποτύπος της var3 αλλάζει από String (8) σε Integer (2)
var3 = CLng(var3) : msgbox(varType(var3))
' Και εδώ από Integer (2) σε Long (3)

msgbox (CInt("3,9") & ", " & CInt("3,1"))
' Οι τιμές και μετατρέπονται σε αριθμό και στρογγυλοποιούνται

Απάντηση

Αυτός ο ιστότοπος χρησιμοποιεί το Akismet για να μειώσει τα ανεπιθύμητα σχόλια. Μάθετε πώς υφίστανται επεξεργασία τα δεδομένα των σχολίων σας.