Zeiger auf Strukturen in einer HashMap

Anfängerfragen zum Programmieren mit PureBasic.
aaronmueller
Beiträge: 11
Registriert: 13.01.2011 23:51

Zeiger auf Strukturen in einer HashMap

Beitrag von aaronmueller »

Hallo zusammen!

Folgende Situation:
Ich habe eine Struktur:

Code: Alles auswählen

Structure GameMenu
  title.s
  ; [...]
EndStructure
Und eine HashMap mit diesen:

Code: Alles auswählen

NewMap menus.GameMenu()
menus("MAIN_MENU")\title = "My awesome game"
menus("OPTION_MENU")\title = "Options"
Jetzt möchte ich eine Variable/Pointer haben, der auf das aktuelle Menü zeigt. Also auf ein Element der menus-HashMap:

Code: Alles auswählen

current_state.s = "MAIN_MENU"
Global *active_menu.GameMenu = @menus(current_state) ; or something like that ?!? ...
Damit ich dies an einer anderen Stelle aufrufen kann.

Code: Alles auswählen

Debug active_menu\title
Leider funktioniert dies nicht so wie ich mich das vorgestellt habe. (Compiler sagt "The following variable doesn't have a Structure: active_menu") Wie gehe ich hier vor?
Vermutlich habe ich das alles sehr umständlich gemacht, ich würde mich über ein bisschen Code-Review von euch freuen!

Viele Grüße,
Aaron
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Re: Zeiger auf Strukturen in einer HashMap

Beitrag von DrShrek »

Versuchs doch mal so:

Code: Alles auswählen

Debug *active_menu\title
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
aaronmueller
Beiträge: 11
Registriert: 13.01.2011 23:51

Re: Zeiger auf Strukturen in einer HashMap

Beitrag von aaronmueller »

The following variable doesn't have a 'Structure': *active_menu.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Zeiger auf Strukturen in einer HashMap

Beitrag von STARGÅTE »

Du musst natürlich auch dem Pointer eine Strukture geben.

Code: Alles auswählen

Structure GameMenu
  title.s
EndStructure

NewMap menus.GameMenu()
menus("MAIN_MENU")\title = "My awesome game"
menus("OPTION_MENU")\title = "Options"

current_state.s = "MAIN_MENU"
Global *active_menu.GameMenu = @menus(current_state)

Debug *active_menu\title
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
aaronmueller
Beiträge: 11
Registriert: 13.01.2011 23:51

Re: Zeiger auf Strukturen in einer HashMap

Beitrag von aaronmueller »

STARGÅTE hat geschrieben:Du musst natürlich auch dem Pointer eine Strukture geben.
Ich kann nicht ganz nachvollziehen was du meinst. Dein Codebeispiel gleicht meinem 1:1 o_O

EDIT: Ach herrje, der Fehler lag auf meiner Seite. Der Code hat von Anfang an funktioniert, ich hatte nur meine Includes unglücklich gesetzt, so dass ich an einer Stelle auf den Pointer zugegriffen habe, an dem dieser nicht bekannt ist.

Das Problem hat sich also erledigt :praise:
Antworten