New in Delphi kommt schon hinnt. Klar musst du dort bereits eine Variable übergeben, aber wie du sicherlich schon gesehen hast ist das ein Pointer.
Grundsätzlich läuft das ganze so ab. Man hat eine Variable welche ein Pointer ist (PInteger zum Beispiel ist ein Pointer auf einen Integer). Mit "New(PIntegerVariable)" fordert man dann speicher an und der Pointer(Adresse) auf diesen Speicher wird der Variablen "PIntegerVariable" zugewiesen.
Nun kann ich diesen Vorgang immer wieder holen und immer mehr speicher anfordern.
Allerdings sollte man sich die Pointer auch merken/speichern damit man den Speicher später auch wieder freigeben kann.
Ein Beispiel:
Delphi-Quellcode:
var LVariable: PInteger;
LCount: Integer;
LList: TList;
begin
LList := TList.Create; //eine Liste in der wir uns die Variablen speichern (Pointer darauf)
for LCount := 0 to 4 do //in unserem Beispiel holen wir 5 mal speicher
begin
new(LVariable); //Hiermit wird Speicher angefordert und die Adresse des Speichers wird dann der Variablen zugewiesen
LList.Add(LVariable); //damit wir unseren angeforderten Speicher später auch noch nutzen können, speichern wir einen Pointer darauf in einer Liste
end;
//do anything with the list
for LCount := 0 to LList.Count - 1 do
dispose(LList.Items[LCount]); //angeforderten Speicher wieder freigeben
LList.Free; //Liste freigeben
end;