Riesen Array Problem

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ich wollte
gar nicht die einzelen Werte ausgeben haben, sondern die Werte in EINEM
einzigen Array Speichern, also:

In Array aabb 1,10,2,20,3,30

..
Also eine Array wo alle Werte drin sind, die direkt auslesbar ist,
ohne die genaueren angaben welche Werte man auslesen soll.

:?
*nix verstehn*
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Laut Source uebergibst du ein Array das dann mit den Daten gefuellt wird.
Was du am Ende dafuer benutzt, also Array oder ne strukturierte Variable,
ist voellig wurst.

Edit:
okay , jetzt war ich zu lahm ...
lol
Beiträge: 18
Registriert: 17.01.2006 13:46
Wohnort: Borken
Kontaktdaten:

Beitrag von lol »

@ Kaeru Gaman

das hab ich zu spät entdeckt, ich wollte das ungefair so haben:
aabb(0) - keinen weiteren Index, sonderen es sollte nur bei 0 bleiben.
Und das per Suffix wollte ich auch lassen, nur das ich aabb eingeben muss
und dann die Werte direkt habe... Danke!
Ebenfalls ein Denkfehler von mir!



@ #NULL

Wie soll ich es dir und den anderen erklären...
ich kanns einfach nicht richtig erklären, sry!

Ein Array z.b. aabb(0)
der den Wert hat von 1,10,2,20,3,30 - so sollte er es mir ausgeben,
aber zum glück gibts ja noch andere möglichkeiten, die Sinnvoll sind!
( edel und Kaeru Gaman haben mich drauf gebracht und hingewiesen
das ich ein totalen Denkfehler gemacht habe - DANKE! )

@ edel

Das hab ich nun auch endlich gemerkt, kommt wohl vom Kater heute ^^

Danke!
Grüße alle die ich kenne!
-----------------------------

PureBasic v. 4.00
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

also..
array() wäre ein array, bzw die adresse des ersten elementes
array(0) wäre eine position im array (in dem fall die selbe/ die erste) ..also die adresse + offset

das gleiche für structures
StructuredVar() ..[erste] adresse der var, bzw adresse des ersten feldes
StructuredVar()\field2 ..adresse + offset
..

in beiden fällen hast du einfach einen speicherblock, der die selben werte beinhalten kann. du kannst über ein array oder eine struktur darauf zugreifen. wenn eine procedure ein array oder dergleichen verlangt, verlangt sie ja eigentlich nur einen pointer. und den speicher auf den gezeigt wird behandelt die proc einfach so wie sie will (größe und offsets). ob außerhalb der procedure auf den speicher durch arrays, strukturiert variablen oder einfach grobe peeks'n'pokes zugegriffen wird ist ihr egal.
my pb stuff..
Bild..jedenfalls war das mal so.
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

also ich würde das so machen:

structure aufgaben
min.d
max.d
...
endstructure

dim aabb.aufgaben(6)

wenn du jetzt eine lesen willst dann geht das so:

aabb(4)\min = 12
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Wenn du das so machen moechtest kannst du das natuerlich gerne tun,
der Befehl verlangt aber nur eine Struktur mit 6 Feldern.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

lol hat geschrieben:@ Kaeru Gaman

das hab ich zu spät entdeckt, ich wollte das ungefair so haben:
aabb(0) - keinen weiteren Index, sonderen es sollte nur bei 0 bleiben.
Und das per Suffix wollte ich auch lassen, nur das ich aabb eingeben muss
und dann die Werte direkt habe... Danke!
Ebenfalls ein Denkfehler von mir!
Was ist mal dazu sagen wollte: "lol!?"

Wie willst du sechs verschiedene Werte ohne Index und ohne Suffix
unterscheiden? Willst du, dass aabb(0) nacheinander 1, 10, 2, 20, 3, 30 ist?
Wie soll das bitteschön funktionieren?

Du brauchst entweder einen Index oder einen Suffix.

Hier das Beispiel mit einer Structure:

Code: Alles auswählen

Structure aabb
  minx.d
  maxx.d
  miny.d
  maxy.d
  minz.d
  maxz.d
EndStructure

aabb.aabb
aabb\minx = 1
aabb\maxx = 10
aabb\miny = 2
aabb\maxy = 20
aabb\minz = 3
aabb\maxz = 30

Procedure.d Ode_GeomGetAABB(GeomID, *aabb2.aabb)
 Debug *aabb2\minx
 Debug *aabb2\maxx
 Debug *aabb2\miny
 Debug *aabb2\maxy
 Debug *aabb2\minz
 Debug *aabb2\maxz
EndProcedure

Ode_GeomGetAABB(0, aabb)
Hier ein Beispiel mit Array und Indices:

Code: Alles auswählen

Dim aabb.d(5)
aabb(0) = 1
aabb(1) = 10
aabb(2) = 2
aabb(3) = 20
aabb(4) = 3
aabb(5) = 30

Procedure.d Ode_GeomGetAABB(GeomID, aabb2.d(1))
 Debug aabb2(0)
 Debug aabb2(1)
 Debug aabb2(2)
 Debug aabb2(3)
 Debug aabb2(4)
 Debug aabb2(5)
EndProcedure

Ode_GeomGetAABB(0, aabb())
Und ein Beispiel mit Array und Structure:

Code: Alles auswählen

Structure aabb
  minx.d
  maxx.d
  miny.d
  maxy.d
  minz.d
  maxz.d
EndStructure

Dim aabb.d(5)
aabb(0) = 1
aabb(1) = 10
aabb(2) = 2
aabb(3) = 20
aabb(4) = 3
aabb(5) = 30

Procedure.d Ode_GeomGetAABB(GeomID, *aabb2.aabb)
 Debug *aabb2\minx
 Debug *aabb2\maxx
 Debug *aabb2\miny
 Debug *aabb2\maxy
 Debug *aabb2\minz
 Debug *aabb2\maxz
EndProcedure

Ode_GeomGetAABB(0, @aabb())
Und wenn du jetzt immer noch ein Problem hast, dann kann dir keiner
helfen, weil es nicht geht und völlig falsch gedacht ist.
lol
Beiträge: 18
Registriert: 17.01.2006 13:46
Wohnort: Borken
Kontaktdaten:

Beitrag von lol »

Ähm... es war ein dummer Denkfehler von mir gewesen...

*G* ja das wollte ich eigentlich so haben, aber....
ich habs ja dank euch (wieder) herraus gefunden,
DANKE!

--

Ähm.. also mit der Materie kenn ich mich wohl aus, es war nur
ein dä(!H!)mlicher Fehler von mir...

Sonst probier ich auch immer alles aus bis es so funktioniert wie
ich es gerne hätte, nur diesesmal hab ich euch um Rat geben da man
sich dadurch echt viel Zeit sparen kann ..^^

Danke nochmals an alle!
Grüße alle die ich kenne!
-----------------------------

PureBasic v. 4.00
Antworten