Ist es möglich, dass man Pointer dereferenziert, also an den Ursprungswert zurückkommt (à la C)?
z.B.
Code: Alles auswählen
Define foo = 4
Define *bar = @foo
Define baz = ;Wert von foo, über bar ermitteln?
Gruß, Mok.
Code: Alles auswählen
Define foo = 4
Define *bar = @foo
Define baz = ;Wert von foo, über bar ermitteln?
Code: Alles auswählen
Define Integer = 4
Define *Pointer.Integer = @Integer
Define Value = *Pointer\i
Debug Value
Code: Alles auswählen
Structure AllTypes
StructureUnion
*p.AllTypes
i.i
EndStructureUnion
EndStructure
Define Integer = 4
Define *Pointer.Integer = @Integer
Define *Pointer2.AllTypes = @*Pointer
Define *Pointer3.AllTypes = @*Pointer2
; *Pointer2
; | Integer
; | |
Define Value = *Pointer3\p\p\i
; |
; *Pointer
Debug Value
Code: Alles auswählen
Define foo.i = 4
Define *bar = @foo
Define baz = PeekI(*bar)
Debug baz
Code: Alles auswählen
Structure AllTypes
StructureUnion
*p.AllTypes
i.i
EndStructureUnion
EndStructure
Define Integer = 4
Define *Pointer.Integer = @Integer
Define **Pointer.AllTypes = @*Pointer
Define ***Pointer.AllTypes = @**Pointer
Define Value = ***Pointer\p\p\i
Debug Value
Code: Alles auswählen
*Test = 1
Test = 2
Code: Alles auswählen
Structure Uii
*Test
Test.i
EndStructure
Code: Alles auswählen
Uii.Uii\*Test = 2
Code: Alles auswählen
Define *Pointer.Integer = @Integer
Define *_Pointer.AllTypes = @*Pointer
Define *__Pointer.AllTypes = @*_Pointer
Code: Alles auswählen
Structure _
_.i
__.i[5]
EndStructure
Procedure ____(_.i)
ProcedureReturn _*4
EndProcedure
___._
___\_ = 1
___\__[2] = 3
___\__[1] = ___\_+___\__[2]
*____._ = @___
Debug ____(*____\__[1])
ich habe jetzt zu wenig ahnung, was intern im kompilierten programm überbleibt, aber ich denke, vom ursprünglichen variablennamen bleibt ja gar nichts mehr über. vieleicht denke ich da jetzt ein wenig zu einfach, aber meine überlegung ist halt, dass pb bei der syntaxüberprüfung das "**" nur nicht anmeckern müsste.STARGÅTE hat geschrieben:Es geht vermutlich nicht, weil das * genauso wir das $ bei Strings nicht im eigentlichen Sinne zum Variablennamen gehört, also kein zugeassenes Zeichen ist wie zb der Unterstrich.
Code: Alles auswählen
Structure Uii
*Test
Test.i
EndStructure
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Code: Alles auswählen
; Pointer
Define *pValue, *ppValue
; Value
Define Value.i = 100
; Adresse von Value
*pValue = @Value
; Adresse von Pointer auf Adresse von Value
*ppValue = @*pValue
Debug Value
Debug PeekI(*pValue)
Debug PeekI(PeekI(*ppValue))