Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Variable während der Laufzeit erzeugen

  Alt 15. Jul 2005, 17:46
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;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat