GLBasic forum

Other languages => GLBasic - de => Topic started by: WPShadow on 2008-Sep-19

Title: Locale arrays
Post by: WPShadow on 2008-Sep-19
Hi!

Ich habe da mal eine Frage, auf die ich keine Antwort weiß: Wie kann ich die Pointer eines array - Feldes umlegen?

Die Idee ist ein Feld (nennen wir es a$[]) mit einer Bestimmten Größe in einer Funktion zu erzeugen, Daten zuzuweisen und von Außen einfach ein anderes, gleich großes Feld per BYREF darauf zeigen zu lassen. Habe ich da jetzt einen Denkfehler oder dürfte das so funktionieren? Wenn ich es auf die Art nämlich versuche,  bekomme ich immer bloß dies:

Code (glbasic) Select


In file included from C:\DOKUME~1\Cammy\LOKALE~1\Temp\glbasic\gpc_tempg.cpp:2:
C:\DOKUME~1\Cammy\LOKALE~1\Temp\glbasic\gpc_temp.h:9: error: `Anything' was not declared in this scope
In file included from C:\DOKUME~1\Cammy\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:1:
C:\DOKUME~1\Cammy\LOKALE~1\Temp\glbasic\gpc_temp.h:9: error: `Anything' was not declared in this scope
C:\DOKUME~1\Cammy\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:45: error: redefinition of `DGInt __GLBASIC__::init_pics'
C:\DOKUME~1\Cammy\LOKALE~1\Temp\glbasic\gpc_temp.h:9: error: `DGInt __GLBASIC__::init_pics' previously defined here
C:\DOKUME~1\Cammy\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:45: error: `Anything' was not declared in this scope
In file included from C:\DOKUME~1\Cammy\LOKALE~1\Temp\glbasic\gpc_temp1.cpp:1:
C:\DOKUME~1\Cammy\LOKALE~1\Temp\glbasic\gpc_temp.h:9: error: `Anything' was not declared in this scope



Wobei mir bis jetzt noch nicht klar ist, was es mit 'Anything' auf sich hat...

Gruß

W.
Title: Re: Locale arrays
Post by: Kitty Hello on 2008-Sep-19
Sag mal was Du wirklich machen willst, dann gibt's auch eine Lösung.
Title: Re: Locale arrays
Post by: WPShadow on 2008-Sep-19
Ok, das ist ziemlich simpel:

Ich möchte meine Daten (für die GUI) aus der Datenbank laden. Die Daten beinhalten hauptsächlich Zahlen, die die Größe der einzelnen Elemente angeben. Diese hole ich mir in einen 2 dimensionalen Array (Button[window][element]), wodurch ich beim initialisieren gleich alle Fensterbereiche für das gesamte Spiel geladen habe. Danach gebe ich bloß noch an, welches Fenster gezeigt werden soll und alle Elemente werden korrekt dargestellt.

Ich habe das Ganze schon als fixen Block abgefaßt, den ich direkt in die einzelnen Funktionen kopiert habe und das funktionierte nicht schlecht. Aber ich hätte das gerne alles in lokalen Variablen abgefaßt. Die schwierigkeit ist dabei, daß ich die einzelnen Elemente nun an die 'main' <- Funktion übergeben muß und von dort aus an die einzelnen Fenster weiter. Beim letzten Versuch scheiterte alles daran, daß ich diese Elemente global gesetzt habe und sie sich angefangen haben irgendwann selbst zu überschreiben. Und gerade das möchte ich vermeiden.

Deshalb auch den ganzen Array lokal in eine Funktion und einfach alles übergeben, so gut es geht. Aber so richtig habe ich das bisher noch nicht hinbekommen. Deshalb dachte ich auch daran, das Ganze per BYREF zu lösen, aber das wollte irgendwie auch noch so, wie ich es mir grundlegend dachte.
Title: Re: Locale arrays
Post by: Kitty Hello on 2008-Sep-19
ich versteh's nicht ganz. aber ein Feld als Parameter ist immer BYREF:

Code (glbasic) Select


LOCAL arr[]

fill(arr[])


FUNCTION fill: a[]
LOCAL f[]
   DIMDATA f[], 1,2,3,4,5
   a[] = f[]
ENDFUNCTION
Title: Re: Locale arrays
Post by: WPShadow on 2008-Sep-19
Das war genau das, was ich wissen wollte. Nun noch eine Frage:

Wo genau definiere ich den Bereich für die Arrays (DIM a$[])??? Die muß ich normalerweise sowohl in der "Main", als auch in der "fill" - Funktino anlegen, oder?
Title: Re: Locale arrays
Post by: Schranz0r on 2008-Sep-20
DIMDATA macht das DIM für dich ;)
Title: Re: Locale arrays
Post by: WPShadow on 2008-Sep-20
Kleiner Tip: Wenn ich die DB verwende und 2500 Datensätze einlesen will, dann werde ich wohl kaum DIMDATA verwenden können,oder?  =D
Title: Re: Locale arrays
Post by: Quentin on 2008-Sep-20
*rofl*
manchmal ist es echt nicht leicht, deinen Gedankengängen zu folgen, WP, nichts für ungut ;)

"Main" ist ja auch "nur" eine Funktion. Wieso erstellst du dein Array nicht LOCAL in "Main" und übergibst es als Parameter an deine Lesefunktion oder was auch immer?
Title: Re: Locale arrays
Post by: WPShadow on 2008-Sep-20
hehehe

Keine Sorge, das Problem ist jetzt ansich schon gelöst. Ich werde noch bis ca. Ende September brauche, bis ich euch zeigen kann, wieso ich so doof gefragt habe, aber dann klärt sich das alles von selbst. Versprochen!

Danke inzwischen. Ich denke, diesmal hab ich's kapiert!!!
Title: Re: Locale arrays
Post by: Schranz0r on 2008-Sep-21
Wenn die Größe nicht fest ist, mach einfach REDIM wenn du noch was hinzufügen willst ;)