Buchempfehlung
MySQL kurz & gut
MySQL kurz & gut
Das preiswerte Taschen- buch stellt MySQL-rele- vante Inhalte systematisch und knapp dar, sodass es sich optimal zum Nach- schlagen beim Pro- grammieren eignet. [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: Speicherverwaltung

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 letztenendes 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 Element vom Default-Constructor erstellt. Bei einfachen Datatypen wie BefehlsreferenzeintragINTEGER oder BefehlsreferenzeintragDOUBLE werden sie mit Null (0) initialisiert, bei BefehlsreferenzeintragUDTs (user defined types) 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. Der Metabefehl Befehlsreferenzeintrag'$DYNAMIC bzw. die Einstellung BefehlsreferenzeintragOPTION DYNAMIC unterbindet die Erstellung statischer Felder.
Achtung: '$DYNAMIC bzw. OPTION DYNAMIC steht nur bis FreeBASIC v0.16 zur Verfügung!

Wird die Größe eines variablen Arrays ohne den PRESERVE-Parameter geändert, werden alle Elemente zerstört und neue Elemente werden vom Default-Constructor erstellt. Mit dem PRESERVE-Parameter 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-Constructor am Ende des Arrays erstellt.

Beachte: Die Benutzung von REDIM in einer 'Member-Procedure' mit einem Array, das Instanzen der Objekt-Klasse enthält, ist undefiniert und wird [hoffentlich] einen fürchterlichen Programmabsturz zur Folge haben.

Achtung: REDIM kann NICHT bei Arrays benutzt werden, die zu BefehlsreferenzeintragUDTs gehören, da momentan nur Arrays mit fester Größe in UDTs unterstützt werden.

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

Ausgabe:

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

Unterschiede zu QB:

Unterschiede zu früheren FreeBASIC-Versionen:

Unterschiede unter den FB-Dialektformen:

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


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