Περιεχόμενα

# Πρόταση ReDim

Δηλώνει ή ξαναορίζει μεταβλητές ή πίνακες.

### Σύνταξη:

    ReDim [Preserve] μεταβλητής [(έναρξη έως τέλος)] [ως όνομα τύπου][, μεταβλητή2 [(έναρξη έως τέλος)] [ως όνομα τύπου][,...]]

Προαιρετικά, προσθέστε τη λέξη-κλειδί Preserve για να διατηρήσετε τα περιεχόμενα του πίνακα που επαναπροσδιορίζει τις διαστάσεις. Το ReDim μπορεί να χρησιμοποιηθεί μόνο σε υπορουτίνες.

### Παράμετροι:

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

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

Byte (ψηφιολέξη): μεταβλητή ψηφιολέξης (0-255)

Μπουλ: Μεταβλητή Μπουλ (Αληθές, ψευδές)

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

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

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

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

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

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

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

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

Παραλλαγή: Τύπος μεταβλητής παραλλαγής (περιέχει όλους τους τύπους, καθορίζεται με ορισμό). Εάν ένα όνομα τύπου δεν καθορίζεται, οι μεταβλητές ορίζονται ως τύπος παραλλαγής, εκτός και χρησιμοποιείται πρόταση από DefBool έως DefVar.

αντικείμενο: Αντικείμενο Universal Network object (UNO) ή στιγμιότυπο αντικειμένου ClassModule.

char (χαρακτήρας): Ειδικός χαρακτήρας που δηλώνει τον τύπο δεδομένων μεταβλητής.

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

Declaration character | Variable type name
--- | ---
% | Integer
& | Long
! | Single
# | Double
$ | String
@ | Currency

πίνακας: Δήλωση πίνακα.

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

έναρξη και τέλος μπορούν να είναι αριθμητικές εκφράσεις εάν εφαρμόζεται ReDim στο επίπεδο διεργασίας.

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

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

      Dim text(20) As String ' 21 στοιχεία αριθμημένα από 0 έως 20
      Dim value(5 to 25) As Integer ' 21 τιμές αριθμημένες από 5 έως 25
      Dim amount(-15 to 5) As Currency ' 21 ποσότητες (συμπεριλαμβανομένου του 0), αριθμημένες από -15 έως 5
      REM Δισδιάστατο πεδίο δεδομένων
      Dim table$(20,2) ' 63 στοιχεία· από ο έως 20 επιπέδου 1, από 0 έως 20 επιπέδου 2 και από ο έως 20 επιπέδου 3.

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

## Παράδειγμα:

    Sub ExampleRedim
        Dim iVar() As Integer, iCount As Byte
        ReDim iVar(5) As Integer
        For iCount = 1 To 5
            iVar(iCount) = iCount
        Next iCount
        ReDim iVar(10) As Integer
        For iCount = 1 To 10
            iVar(iCount) = iCount
        Next iCount
    End Sub