Mit "New(Eingabe)" machst Du einen pointer auf dem Heap. ok.
Du weist Eingabe jedoch nichts zu, in dem Fall ist das
IMHO dann undefniert. Eingabe zeigt also irgendwohin.
Mit "Eingabe^ := Edit1.Text;" behandelst du dann das irgendwo als einen String und schreibst da etwas rein.
Wenn Du wirklich die Speicheradresse des Zeigers haben willst, dann wäre das bei dir 3. und 4.
Es nutzt dir aber rein gar nichts wenn du "den Wert des Eingabefeldes im Heap speichern" willst.