Seite 1 von 1

ReDim Preserve Array

Verfasst: Mo, 26.07.2004 22:41
von Niels
Hallo,

unter Windows geht folgender Befehl super:

Code: Alles auswählen

ReDim Preserve Arrayname ( neuer_Wert, gleicher_Wert_wie_vorher)
super, unter Linux bekomme ich die Meldung: "Basic-Syntaxfehler. Variable Arrayname bereits definiert." Logo! Deshalb ja auch ein ReDim und kein Dim. Ich will das Array ja nur vergrößern.
Hat da jemand eine Idee, ich bin dankbar für den kleinsten Hinweis.

Ciao
Niels

Verfasst: Di, 27.07.2004 14:00
von Stephan
Ich weiß leider nicht ob Du unter Windows denselben Code verwendest, möglicherweise ist dort ein Fehler. Die Fehlermeldung weißt darauf hin das die Variable schon vorhanden ist, da das wohl so sein soll sehe ich keinen Grund außer vielleicht etwas sehr weit Hergeholtes:

Wenn Du Dir sicher bist das die ursprüngliche Deklaration so aussah:

Code: Alles auswählen

Dim Arrayname(a,b)
sehe ich keinen Grund für den Fehler, aber vielleicht hast Du ursprünglich einen Typ zugewiesen, also:

Code: Alles auswählen

Dim Arrayname(a,b) As <Typ>
dann müßtest Du das jetzt wohl wieder tun:

Code: Alles auswählen

ReDim Preserve Arrayname ( neuer_Wert, gleicher_Wert_wie_vorher) As <Typ>
weil Du den Typ der Variable nicht umdeklarieren kannst, nur die Größe des Array. (Gibst Du keinen Typ an ist die Variable oder Array vom Typ Variant, zumindest unter VB, ich weiß nicht genau ob das StarBasic genauso handhabt)

Vielleicht war mein Hinweis unnötig, weil Du wußtest das es so ist, aber das ist das Einzige was mir einfällt. Ich habe das auch nicht überprüft, sondern nur aus "dem Bauch heraus" geschrieben und vermute nur das es so sein könnte.


Gruß
Stephan

Verfasst: Di, 27.07.2004 17:49
von Niels
Stephan hat geschrieben:Ich weiß leider nicht ob Du unter Windows denselben Code verwendest, möglicherweise ist dort ein Fehler.
Jo, ist 100% der gleiche Code, oder besser noch genau dei Gleiche Vorlage.
Stephan hat geschrieben:Wenn Du Dir sicher bist das die ursprüngliche Deklaration so aussah:

Code: Alles auswählen

Dim Arrayname(a,b)
sehe ich keinen Grund für den Fehler, aber vielleicht hast Du ursprünglich einen Typ zugewiesen, also:

Code: Alles auswählen

Dim Arrayname(a,b) As <Typ>
dann müßtest Du das jetzt wohl wieder tun:

Code: Alles auswählen

ReDim Preserve Arrayname ( neuer_Wert, gleicher_Wert_wie_vorher) As <Typ>
weil Du den Typ der Variable nicht umdeklarieren kannst, nur die Größe des Array. (Gibst Du keinen Typ an ist die Variable oder Array vom Typ Variant, zumindest unter VB, ich weiß nicht genau ob das StarBasic genauso handhabt)

Vielleicht war mein Hinweis unnötig, weil Du wußtest das es so ist, aber das ist das Einzige was mir einfällt. Ich habe das auch nicht überprüft, sondern nur aus "dem Bauch heraus" geschrieben und vermute nur das es so sein könnte.
Danke, der Hinweis ist sehr nötig gewesesen, da ich davon ausgegangen bin, dass ich den Arraytyp bereits deklariert habe und diese Angabe daher nicht noch einmal brauche. Dazu habe ich noch das Handbuch unvollständig gelesen (das AS Typ ist recht weit eingerückt). Werde die Geschichte nacher mal unter Linux testen.
Das ist mal wieder typisch Linux :D . Pingelig wie sonstwas - einfach kein Hang zur krativen Codeinterpretation :twisted: .

Ciao
Niels

Verfasst: Di, 27.07.2004 21:20
von Niels
Stephan hat geschrieben: Ich habe das auch nicht überprüft, sondern nur aus "dem Bauch heraus" geschrieben und vermute nur das es so sein könnte.
Den Bauch hätte ich auch gerne. Funktioniert Suuuper!

Danke
Niels