Du musst es dereferenzieren
Ein ganz simples Pointer HowTo
Delphi-Quellcode:
{
Grundlegende Sachen zu Pointern:
o Pointer belegen immer 4 Bytes
o Pointer beinhalten die Adresse zur "hingepointetten"(hingezeigten) Variable und natürlich die eigene Adresse (sowie alle anderen Typen)
o Es gibt 2 verschiedene Pointertypen:
a) typisierte Pointer (bsp "PInteger") // so nenne ich sie mal .. da gibts sicher andere Begriffe dafür - ist mir aber jetzt wurscht
b) untypisierte Pointer ("Pointer")
o a Pointer können direkt dereferenziert werden wohingegen
o b Pointer gecastet werden müssen
}
// -- A.)
var
X: Integer;
P: PInteger; // Pointer auf einen Integer !
...
// Adressen sind zum Demonstrationszweck frei gewählt !
X := 12345; // Adresse von X - $00ABCDEF; Wert von X = 12345
P := @X; // Adresse von P - $00FEEFEE; Wert von P = $00ABCDEF
// jetzt zeigt unser Pointer P auf X
// wenn wir nun die Werte verändern wollen "dereferenzieren" wir es wie folgt
P^ := 54321; // Adresse von P - $00FEDCAB; Wert von P = $00ABCDEF
// der Wert & die Adresse haben sich nicht geändert
// da wir sie aber dereferenziert haben, haben wir somit auf X zugegriffen:
// X hat jetzt den Wert 54321!
// -- B.)
var
PInt: Pointer;
...
PInt := @X;
Integer( PInt^ ) := 113245;
Ich garantiere keine 100% Korrektheit