ReDim Preserve endet mit Index außerhalb des gültigen Bereichs
Hallo allerseits,
ich habe ein array:
dim temp()
redim preserve temp(2,0,0)
diesem kann ich wenn ich das recht verstanden habe so wie es ist 3 werte zuweisen:
temp(0,0,0)=wert1
temp(1,0,0)=wert2
temp(2,0,0)=wert3
nun möchte ich in meinem script das array vergrößern:
redim preserve temp(2,1,0)
meiner meinung nach sollte ich darin jetzt 6 werte speichern können:
temp(0,0,0)=wert1
temp(0,1,0)=wert2
temp(1,0,0)=wert3
temp(1,1,0)=wert4
temp(2,0,0)=wert5
temp(2,1,0)=wert6
das array vergrößert sich meiner meinung nach und verkleinert sicht nicht.
deswegen verstehe ich nicht warum mein script mit der Meldung "Index außerhalb des gültigen Bereichs" abbricht.
kann mir das jemand erklären oder hat eine lösung?
vielen dank!
ich habe ein array:
dim temp()
redim preserve temp(2,0,0)
diesem kann ich wenn ich das recht verstanden habe so wie es ist 3 werte zuweisen:
temp(0,0,0)=wert1
temp(1,0,0)=wert2
temp(2,0,0)=wert3
nun möchte ich in meinem script das array vergrößern:
redim preserve temp(2,1,0)
meiner meinung nach sollte ich darin jetzt 6 werte speichern können:
temp(0,0,0)=wert1
temp(0,1,0)=wert2
temp(1,0,0)=wert3
temp(1,1,0)=wert4
temp(2,0,0)=wert5
temp(2,1,0)=wert6
das array vergrößert sich meiner meinung nach und verkleinert sicht nicht.
deswegen verstehe ich nicht warum mein script mit der Meldung "Index außerhalb des gültigen Bereichs" abbricht.
kann mir das jemand erklären oder hat eine lösung?
vielen dank!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 79071
Url: https://administrator.de/contentid/79071
Ausgedruckt am: 16.11.2024 um 05:11 Uhr
1 Kommentar
Aus der script56.chm: [ReDim-Anweisung]
--> "..Mit dem Schlüsselwort Preserve können Sie nur die Größe der letzten Arraydimension ändern"...
--> und nie nicht die Anzahl der Dimensionen.
Grüße
Biber
Hinweise
Die ReDim-Anweisung dient zum Festlegen oder Ändern der Größe eines dynamischen Arrays, das bereits formal mit einer Private, Public oder Dim-Anweisung und einem leeren Klammernpaar (ohne Indizes für die Dimensionen) deklariert wurde. Sie können die ReDim-Anweisung mehrmals verwenden, um die Anzahl der Elemente und Dimensionen in einem Array zu ändern.
Mit dem Schlüsselwort Preserve können Sie nur die Größe der letzten Arraydimension ändern, nicht aber die Anzahl der Dimensionen. Wenn das Array zum Beispiel nur eine Dimension hat, können Sie die Größe dieser Dimension ändern, weil es die letzte und einzige Dimension ist. Hat das Array jedoch mindestens zwei Dimensionen, können Sie lediglich die Größe der letzten Dimension ändern, wenn der Inhalt des Arrays erhalten bleiben soll.
Das folgende Beispiel veranschaulicht, wie Sie die letzte Dimension eines dynamischen Arrays vergrößern können, ohne bereits bestehende Daten im Array zu löschen.
ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)
Anmerkung Wenn Sie ein Array verkleinern, gehen die Daten in den entfernten Elementen verloren.
Bei der Initialisierung von Variablen wird eine numerische Variable mit 0 und eine Zeichenfolgevariable mit einer Zeichenfolge der Länge Null ("") initialisiert. Einer Variablen, die auf ein Objekt verweist, muss ein vorhandenes Objekt mit der Set-Anweisung zugeordnet werden, bevor sie verwendet werden kann. Solange sie keinem Objekt zugewiesen ist, hat die deklarierte Objektvariable den Sonderwert Nothing.
--> "..Mit dem Schlüsselwort Preserve können Sie nur die Größe der letzten Arraydimension ändern"...
--> und nie nicht die Anzahl der Dimensionen.
Grüße
Biber