reinix
Goto Top

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!

Content-ID: 79071

Url: https://administrator.de/forum/redim-preserve-endet-mit-index-ausserhalb-des-gueltigen-bereichs-79071.html

Ausgedruckt am: 22.12.2024 um 12:12 Uhr

Biber
Biber 24.01.2008 um 17:02:26 Uhr
Goto Top
Aus der script56.chm: [ReDim-Anweisung]
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