Stellen wir uns vor, du hast zwei Integer-Variablen X und Y. Jetzt willst du eine Variable B, die von Button1 mit f(X) und von Button2 mit f(Y) belegt wird. ButtonB soll dann f(B) auf 2 setzen, sodass, wenn vorher Button1 gedrückt wurde, in X 2 steht, bei Button2 entsprechend in Y 2. Ist das richtig? Wenn ja, geht das so:
Delphi-Quellcode:
type PInteger = ^Integer;
var B: PInteger; X, Y: Integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
B := @X;
Form2.Visible := True;
end;
procedure TForm2.ButtonBClick(Sender: TObject);
begin
B^ := 2;
Form2.Visible := False;
end;
Das ist das Konzept der "Zeiger". Statt eine Variable mit dem Wert einer anderen zu belegen, wird ihre Adresse gespeichert (das macht das @, es berechnet die Adresse einer Variable). Mit der Adresse selbst arbeitet man beim speichern in das Ziel (hier X) nicht, man
dereferenziert und sagt damit: hier hin bitte. Das macht das ^ (es "wandelt den Zeiger in eine Variable um"). Zeiger brauchst du nur für simple Datentypen (Zahlen, Shortstrings, statische Arrays, Records), bei Typen, die an sich schon Zeiger sind (dynamische Arrays, normale Strings und Objekte (auch TStrings!)) musst du das nicht tun - da reicht das, was du schon geschrieben hast. VarB wäre eben vom Typ TStrings.