Wie geht Declare Array ?

Anfängerfragen zum Programmieren mit PureBasic.
ullmann
Beiträge: 205
Registriert: 28.10.2005 07:21

Wie geht Declare Array ?

Beitrag 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.
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Re: Wie geht Declare Array ?

Beitrag 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)
pb 4.51
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Wie geht Declare Array ?

Beitrag 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)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
ullmann
Beiträge: 205
Registriert: 28.10.2005 07:21

Re: Wie geht Declare Array ?

Beitrag 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.
Antworten