Seite 1 von 1

Wie geht Declare Array ?

Verfasst: 21.08.2011 19:33
von ullmann
Mein Code ist in folgender Reihenfolge aufgebaut:
Compiler-Direktiven, Konstanten, Strukturen, Variablen, Prozeduren, Hauptprogramm.

Das Hauptprogramm öffnet einen WindowedScreen.
Erst danach stehen mir die Dimensionen für ein globales Bigarray.u(ScreenWidth, ScreenHight) zur Verfügung.

Unter Variablen kann ich es nicht dimensionieren, da habe ich die Screen-Auflösung noch nicht.
Also wollte ich es im Hauptprogramm dimensionieren.

Da meckern aber die Prozeduren, dass sie das Bigarray nicht kennen.

Also versuchte ich unter Variablen "Declare Bigarray.u()". Das funktioniert aber auch nicht.
ReDim geht auch nicht, da es nur die letzte Dimension redimensionieren kann.

Nun steh ich auf dem Schlauch. Wie löst man so etwas?

Da OpenWindowedScreen eine Fehlerprozedur nutzt, müsste ich also diesen Teil des Hauptprogrammes (also OpenWindowedScreen) zwischen die
Prozeduren schieben, dann das Array global dimensionieren und dann folgen die restlichen Prozeduren. Das ist doch Mist.
Ich habe auch noch nicht ausprobiert, ob das überhaupt funktioniert.

Re: Wie geht Declare Array ?

Verfasst: 21.08.2011 19:49
von gnasen
Deklarier zunächst das Array mit einer beliebigen größe (sinnvollerweise 0) und wenn du die richtige größe kennst, dimensionierst du es erneut, also

Code: Alles auswählen

dim test.i(0,0)
;blablayadayada
dim test(width,height)

Re: Wie geht Declare Array ?

Verfasst: 21.08.2011 19:52
von STARGÅTE
Definiere das Array erst mal vorweg, ohne Fehler (bzw. nur einem)

Code: Alles auswählen

Global Dim BigArray(0,0,...) ; Wie viele Dimensionen auch immer
danach kannst du es bereits überall nutzen.
Wenn du dann weißt wie groß es ist, kannst du es einfach neu definieren:

Code: Alles auswählen

Dim BigArray(100,100,...; Global ist es ja schon)

Re: Wie geht Declare Array ?

Verfasst: 21.08.2011 20:01
von ullmann
Super, danke.

Scheint im ersten Vorab-Test zu funktionieren.

Dennoch sehe ich das eher als Work-Around. Ein Declare Array würde besser aussehen.

Aber mir genügt diese Lösung erstmal.