Re: mehrdimensionalen Array REDIM

von Tu Dang » Donnerstag, 25. September 2003



Hallo Michael,

Michael Posthoff schrieb:
>
> Liebe Gruppe,
>
> ich verwende einen zweidimensionalen Array für Daten, die später per
> quicksort sortiert werden sollen:
>
> REDIM AusgabeResults(20,1)
> intcount = 0
> FOR i = 0 TO 20
> IF preis(i) > 0 THEN
> AusgabeResults(intcount, 0) = preis(i)
> AusgabeResults(intcount, 1) = beschreibung(i)
> intcount = intcount + 1
> END IF
> NEXT
>
> REDIM PRESERVE AusgabeResults(intcount-1,1)
>
> Zunächst wird der Array auf 20 definiert, dann werden Werte hinzugefügt,
> aber nur, wenn der preis nicht 0 ist, d.h. einige Werte werden übersprungen,
> intcount zählt also die tatsächlich hinzugefügten Werte, am Ende soll
> AusgabeResults auf den tatsächlichen Umfang definiert werden mit REDIM
> PRESERVE.
>
> Dabei bekomme ich eine out of bound Fehler, wenn intcount < 20 ist, ist es
> gleich 20, es stand also in jeder zeile ein Preis > 0, dann gibt es keinen
> Fehler. Woran kann das liegen.
> Kann man mehrdimensionale Arrays nicht mit REDIM Preserve redimensionieren?
>
> Danke für Tipps, gern auch andere Lösungen.
> Michael

1. du must das Array redimensionieren BEVOR die Grenze
erreicht ist, und nicht erst hinterher, Tipp: prüfen mit
Modulo-Division.

2. mit Redim Preserve kannst du nur die letzte Dimension
ändern, d.h.
Dim x()
Redim x(10,2)
...
Redim Preserve x(10,10) ist zulässig, aber
Redim Preserve x(15,2) ist nicht zulässig

--
Gruß
Tu



If you have any questions, you can contact us: admin#mofeel.net     Spam Report