Πρόταση Dim

Δηλώνει μια μεταβλητή ή έναν πίνακα.

Αν οι μεταβλητές διαχωρίζονται με κόμμα (π.χ. DIM sPar1, sPar2, sPar3 AS STRING), μόνο οι μεταβλητές Variant θα καθοριστούν μέχρι την τελευταία μεταβλητή. Μια αποκλειστική γραμμή καθορισμού θα πρέπει να χρησιμοποιηθεί για κάθε μεταβλητή.

Dim sPar1 As String

Dim sPar2 As String

Dim sPar3 As String

Η πρόταση Dim χρησιμοποιείται για να δηλώσει τοπικές μεταβλητές εντός διαδικασιών Sub. Οι καθολικές μεταβλητές εκτός των διαδικασιών Sub δηλώνονται με τις προτάσεις PUBLIC ή PRIVATE.

Σύνταξη:

[ReDim]Dim VarName [(start To end)] [As VarType][, VarName2 [(start To end)] [As VarType][,...]]

Παράμετροι:

VarName: Οποιοδήποτε όνομα μεταβλητής ή πίνακα.

Start, End: Αριθμητικές τιμές ή σταθερές που καθορίζουν τον αριθμό των στοιχείων (NumberElements=(end-start)+1) και το εύρος των δεικτών.

Οι παράμετροι Start και End μπορεί να είναι αριθμητικές παραστάσεις, αν η πρόταση ReDim εφαρμόζεται σε επίπεδο διαδικασίας.

VarType: Λέξη-κλειδί που χρησιμοποιείται για να δηλώσει τον τύπο δεδομένων μιας μεταβλητής.

Keyword: Τύπος μεταβλητής

Bool: Boolean, δυαδική μεταβλητή (True, False)

Currency: Μεταβλητή νομισματικής μονάδας (Νομισματική μονάδα με 4 δεκαδικά ψηφία)

Date: Μεταβλητή ημερομηνίας

Double: Μεταβλητή κινητής υποδιαστολής διπλής ακριβείας (1,79769313486232 x 10E308 - 4,94065645841247 x 10E-324)

Integer: Ακέραια μεταβλητή (-32768 - 32767)

Long: Ακέραια μεταβλητή μεγάλου μήκους (-2.147.483.648 - 2.147.483.647)

Object: Μεταβλητή αντικειμένου (Σημείωση: μπορεί να οριστεί μόνο αργότερα με Set!)

Single: Μεταβλητή κινητής υποδιαστολής απλής ακριβείας (3,402823 x 10E38 - 1,401298 x 10E-45).

String: Μεταβλητή συμβολοσειράς που αποτελείται από 64.000 χαρακτήρες ASCII το μέγιστο.

[Variant]: Τύπος μεταβλητής Variant (περιέχει όλους τους τύπους που έχουν καθοριστεί εξ ορισμού). Αν δεν έχει δοθεί λέξη-κλειδί, οι μεταβλητές καθορίζονται αυτόματα ως τύπος Variant, εκτός και αν έχει χρησιμοποιηθεί κάποια πρόταση από την DefBool έως DefVar.

Στην LibreOffice Basic, δεν χρειάζεται να δηλώσετε τις μεταβλητές σας ρητά. Εντούτοις, πρέπει να δηλώσετε έναν πίνακα προτού να μπορέσετε να τον χρησιμοποιήσετε. Μπορείτε να δηλώσετε μια μεταβλητή με την δήλωση Dim, χρησιμοποιώντας τα κόμματα ως διαχωριστικό για πολλαπλές δηλώσεις. Για να δηλώσετε έναν τύπο μεταβλητής, εισάγετε έναν χαρακτήρα τύπου-δήλωσης μετά από το όνομα ή χρησιμοποιήστε την αντίστοιχη λέξη-κλειδί.

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

Οι πίνακες δηλώνονται με πρόταση Dim. Υπάρχουν δύο μέθοδοι για να καθορίσετε το εύρος των τιμών ευρετηρίου:

DIM text(20) as String REM 21 στοιχεία με αρίθμηση από 0 έως 20

DIM text(5 to 25) as String REM 21 στοιχεία με αρίθμηση από 5 έως 25

DIM text(-15 to 5) as String REM 21 στοιχεία (συμπεριλαμβανομένου του 0)

REM με αρίθμηση από -15 έως 5

Δισδιάστατο πεδίο δεδομένων

DIM text(20,2) as String REM 63 στοιχεία, από 0 έως 20 επίπεδο 1, από 0 έως 20 επίπεδο 2 και από 0 έως 20 επίπεδο 3.

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

Παράδειγμα:

Sub ExampleDim1

Dim sVar As String

Dim iVar As Integer

    sVar = "Γραφείο"

End Sub

 

Sub ExampleDim2

' Δισδιάστατο πεδίο δεδομένων

Dim stext(20,2) As String

Const sDim as String = " Διάσταση:"

For i = 0 To 20

    For ii = 0 To 2

        stext(i,ii) = str(i) & sDim & str(ii)

    Next ii

Next i

For i = 0 To 20

    For ii = 0 To 2

        MsgBox stext(i,ii)

    Next ii

Next i

End Sub