Das ist völlig irrelevant, ob der Speicherplatz ausreicht. Es ist lediglich ein Test zum Verständnis von Zeigern.
Wenn ich die Speicheradresse eines Zeigers ausgeben will, muss ich wohl in einen Integer casten, da ich einen Zeiger nicht anzeigen kann.
Noch einmal die Frage:
Was gibt IntToStr(Integer(Eingabe)) zurück, wenn, wie in diesem Fall, Eingabe ein Zeiger ist?
Leider hast Du Dir zur Erforschung von Zeigern einen Kandidaten ausgesucht, der die Sache kompliziert macht. Ein String ist bereits eine Zeiger. D.h. ^String ist ein Zeiger auf einen Zeiger. Ich würde vorschlagen, dass Du die Sache vielleicht zunächst mal etwas einfacher gestaltest:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Eingabe: ^Integer; // für die Variable "Eingabe" wird Platz auf dem Stack reserviert
begin
New(Eingabe); // reserviert Platz für den Integer im Speicher
Eingabe^ := 123; // der reserviert Platz wird mit einem Wert gefüllt
ShowMessage(IntToStr(Eingabe^) + #13#10 + // Erwartete Ausgabe "123"
IntToStr(Integer(Eingabe)) + #13#10 + // Erwartete Ausgabe: Wert des Zeigers auf "123"
IntToStr(Integer(@Eingabe)) + #13#10 + // Erwartete Ausgabe: Adresse der Variablen "Eingabe" (die Adresse auf dem Stack)
IntToStr(Integer(Addr(Eingabe))) // wie vorherige Zeile
);
Dispose(Eingabe); // gibt den Platz für den Integer wieder frei
end;