Seite 1 von 1

array verständnis frage

Verfasst: 12.01.2006 20:19
von diGGa
hi
warum wirft mir dashier:

Code: Alles auswählen

Dim blub(5)
blub(1) = 5
Dim blub(10)
blub(1) = 10
For i=0 To 5
        Debug blub(i)
Next 
im debugger 5 0en aus? ich dachte wenn man dim erneut aufruft wird das array erneut dimensioniert und der inhalt gelöscht. aber anscheinend nimmt es auch keine daten mehr auf?

Verfasst: 12.01.2006 20:38
von Macros

Code: Alles auswählen

Dim blub(5)
blub(1) = 5
Dim blub(10)
blub(1) = 20
For i=0 To 5
        Debug blub(i)
Next
Debug "--------"
blub(1) = 20
For i=0 To 5
        Debug blub(i)
Next
:?

Verfasst: 12.01.2006 20:42
von Fabio
Hmmmm, anscheinend muss man das Array erst einmal auslesen bevor
man es in der grösse verändert :shock:

Code: Alles auswählen

Dim blub(5)
blub(1) = 5

For i=0 To 4
  Debug blub(i)
Next

Dim blub(10)
blub(1) = 10
For i=0 To 5
  Debug blub(i)
Next

Verfasst: 12.01.2006 20:43
von roherter
Kannste uns auch sagen warum es dann geht??

Verfasst: 12.01.2006 20:43
von remi_meier
Das ist ein von Fred für V4 schon gefixter Bug /:->

Verfasst: 12.01.2006 20:44
von roherter
aha

Verfasst: 12.01.2006 20:47
von Macros
Ich hab ein bisschen rumprobiert, und es sieht so aus als ob
der erste Zugriff auf das Array fehlschlägt (nach Dim() ),
alle folgenden normal arbeiten. :bluescreen:

Verfasst: 12.01.2006 20:50
von remi_meier
Ich könnte dich jetzt mit Details vollreden wann, wie und wo der Bug auf-
tritt, aber ich lass es mal. Allgemein kann gesagt werden, dass der Bug
normalerweise nicht auftritt, wenn man nach dem Zuweisen eines Wertes
zu einem Array nicht gleich wieder das Array neu dimensioniert und wieder
direkt danach füllt. (Mit direkt meine ich, ohne anderen Code dazwischen)
Ein einfaches

Code: Alles auswählen

Dim blub(5) 
blub(1) = 5 
If #True:EndIf
Dim blub(10) 
blub(1) = 10 
For i=0 To 5 
        Debug blub(i) 
Next
sollte vorerst genügen.

Verfasst: 12.01.2006 20:56
von diGGa
ach sehr gut.. hatte das ganze nur schnell eingetippt um zu wissen ob ich so arbeiten kann.. aber geht ja anscheinend weil code wird schon dazwischen sein ;)