Verfasst: 20.10.2006 15:44
Wenn du Pointern arbeitest, musst du daran denken, dass alles ByRef
übergeben wird und ByVal.
übergeben wird und ByVal.
Geil. Wir sind in einer Ratestunde..Vielleicht will man ja, oder vielleicht will ich ja auch,
Code: Alles auswählen
;# Eine Struktur deklarieren
Structure _STRUC
Feld1.l
Feld2.l
EndStructure
;# Eine lokale Variable vom Typ _STRUC definieren. (Verbraucht sizeof(_STRUC) Bytes)
Lokal._STRUC
;# Einen Zeiger auf einen strukturierten Speicherblock vom Typ _STRUC definieren.
;# Würde ich jetzt ohne Initialisierung in den Zeiger schreiben (*Zeiger\Feld1 = 3),
;# dann würde ich einen IMA (invalid memory access) bekommen.
*Zeiger._STRUC
;# Hier weise ich dem Struktuzeiger "*Zeiger" die Adresse der lokalen Variable "Lokal" zu.
;# dadurch zeigen beide Variablen auf den gleichen Speicherbereich.
*Zeiger = Lokal
;# Wenn ich jetzt über "Zeiger" einen Wert lade, ändert er sich natürlich in Lokal auch, weil es
;# ja der gleiche Speicherbereich ist.
*Zeiger\Feld1 = 666
;# Mittels Debug überprüfe ich das, und siehe da, es ist gleich.
Debug Lokal\Feld1
;# Umgekehrt gehts natürlich auch:
Lokal\Feld2 = 999
Debug *Zeiger\Feld2
Code: Alles auswählen
Procedure test(*format.test)
*format\a = 100
EndProcedure