Seite 1 von 1
Zugriff auf Map-Element mit Zeiger
Verfasst: 05.09.2017 15:10
von AndyMars
Hallo allerseits
Gemäss Hilfe liefert der Befehl AddMapElement() einen Zeiger auf die "Element-Daten". Soweit so einfach - zumindest einen Zeiger zu bekommen...
Code: Alles auswählen
NewMap test.s()
*ptr=AddMapElement(test(), "irgendeinwert")
test()="mitetwasdrin"
Debug *ptr
Aber was kann ich mit diesem Zeiger nun machen? Kann ich auf den Schlüssel oder den Wert mit diesem Zeiger zugreifen? Und wenn ja, wie?
Grüss euch, Andy
Re: Zugriff auf Map-Element mit Zeiger
Verfasst: 05.09.2017 15:27
von NicTheQuick
So kommst du an den Inhalt und an den Key. Aber letzteres ist so nicht dokumentiert.
Code: Alles auswählen
NewMap test.s()
*ptr.String = AddMapElement(test(), "irgendeinwert")
test() = "mitetwasdrin"
Debug "Inhalt: " + *ptr\s
*ptr - SizeOf(String)
Debug "Key: " + *ptr\s
Vermutlich ist es unproblematisch den Inhalt mittels Pointer zu ändern, aber den Schlüssel solltest du auf keinen Fall ändern.
Re: Zugriff auf Map-Element mit Zeiger
Verfasst: 05.09.2017 21:08
von AndyMars
Ah, das ist cool, danke Nic. Ich werde nur lesend auf die Map zugreifen mit dem Zeiger. Für Schreibzugriffe kann ich ja die regulären Befehle von Purebasic (PB) verwenden.
Die Notation "*ptr.String" sieht ja aus wie eine Zuweisung einer Struktur - kommt diese von Windows?
In meinem Kopf rotiert es gerade ziemlich...

Und dann kann man das Ganze offensichtlich wie ein PB-String verwenden (Debug "Inhalt: " + *ptr\s) ...faszinierend...
Re: Zugriff auf Map-Element mit Zeiger
Verfasst: 06.09.2017 00:07
von Josh
AndyMars hat geschrieben:Die Notation "*ptr.String" sieht ja aus wie eine Zuweisung einer Struktur - kommt diese von Windows?
Es handelt sich um eine von Pb vordefinierte Struktur.
Im englischen Forum gibt es einen
Feature Request der gerade aktuell ist. Eine native Funktion ist immer besser als ein Workaround. Vielleicht kannst ja auch was dazu schreiben, um so mehr sich dazu äußern, desto besser die Chancen dass es umgesetzt wird.
Re: Zugriff auf Map-Element mit Zeiger
Verfasst: 06.09.2017 11:14
von Josh
Was vielleicht ein wenig untergegangen ist. Den Zeiger brauchst du bei Maps in wahrscheinlich 99% der Fälle nicht. Der eigentliche Sinn und Zweck von Maps ist ja, dass du etwas mit einem Key anlegen und mit diesem Key wieder abrufen kannst.