Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - REDIM

Referenz-Navigation

 

Syntax:

REDIM [PRESERVE] [SHARED] ArrayName([[Untergrenze TO] Obergrenze]  _
                                 [, [Untergrenze TO] Obergrenze] _
                                 [, ...]) [AS Datentyp] [, weitereArrays]

REDIM [PRESERVE] [SHARED] AS Datentyp ArrayName([[Untergrenze TO] Obergrenze] _
                                 [, ...]) [, weitereArrays]

Typ: Anweisung
Kategorie: Deklaration

Anmerkung zur Syntax: Unterstriche (_) am Zeilenende werden von FreeBASIC so interpretiert, als wäre die Zeile nicht unterbrochen; dies dient nur der besseren Übersichtlichkeit und hat letzt­end­lich keine Auswirkungen auf die Programmausführung.

REDIM erstellt ein dynamisches Array oder ändert dessen Größe.

REDIM kann benutzt werden, um neue, in der Länge variable Arrays zu erstellen oder vorhandene Arrays dieser Art zu vergrößern. REDIM erstellt IMMER variable Arrays, also können, anders als bei BefehlsreferenzeintragDIM, variable Arrays mit konstanten Indizes erstellt werden.

Wird ein neues variables Array erstellt, dann werden die Elemente vom Default-Konstruktor erstellt. Bei einfachen Datatypen wie BefehlsreferenzeintragINTEGER oder BefehlsreferenzeintragDOUBLE werden sie mit Null (0) initialisiert, bei BefehlsreferenzeintragUDTs vom Default-BefehlsreferenzeintragCONSTRUCTOR, der dann aufgerufen wird.

Wenn REDIM benutzt wird, um ein Array erstmalig zu dimensionieren, bewirkt es, dass es als dynamisches Array erstellt wird, während DIM ein statisches Feld erstellt.

Wird die Größe eines variablen Arrays ohne den PRESERVE-Parameter geändert, werden alle Elemente zerstört und neue Elemente werden vom Default-Konstruktor erstellt. Mit dem Parameter PRESERVE werden die vorhandenen Elemente nicht zerstört, außer wenn das Array verkleinert wird: dann gehen zwangsläufig die abgetrennten Elemente verloren. Wird ein variables Array vergrößert, dann werden die neuen Elemente vom Default-Konstruktor am Ende des Arrays erstellt.

Beispiel 1:

DIM x() AS INTEGER

REDIM x(3)
PRINT UBOUND(x)

REDIM x(6)
PRINT UBOUND(x)
SLEEP

Beispiel 2:

' Array mit 5 Elementen anlegen
ReDim Array(1 To 5) As Integer

For index As Integer = LBound(Array) To UBound(Array)
  Array(index) = index
Next

' Auf 10 Elemente vergrößern; dabei wird auch die untere Grenze verschoben
ReDim Preserve Array(9) As Integer

Print "Index", "Wert"
For index As Integer = LBound(Array) To UBound(Array)
  Print index, Array(index)
Next
Sleep

Ausgabe:

Index         Wert
 0             1
 1             2
 2             3
 3             4
 4             5
 5             0
 6             0
 7             0
 8             0
 9             0

Beispiel 3: Anzahl der Dimensionen mit ANY festlegen

REDIM AS INTEGER a()                ' Dimensionenzahl nicht festgelegt
REDIM AS INTEGER b(ANY)             ' eine Dimensionen
REDIM AS INTEGER c(ANY, ANY, ANY)   ' drei Dimensionen

Unterschiede zu QB:

Unterschiede zu früheren Versionen von FreeBASIC:

Unterschiede unter den FB-Dialektformen:

Siehe auch:
BefehlsreferenzeintragDIM, BefehlsreferenzeintragPRESERVE, BefehlsreferenzeintragSCOPE, BefehlsreferenzeintragDYNAMIC (Meta), BefehlsreferenzeintragSTATIC (Meta), BefehlsreferenzeintragUBOUND, BefehlsreferenzeintragLBOUND, BefehlsreferenzeintragArrays


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 05.08.2007 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 07.04.2015 von Redakteurnemored gespeichert.
  Versionen Versionen