Home » Tutorials » VCL » TList
TList
TList allgemein
Zuerst will ich kurz die grundlegenen Funktionen von TList beschreiben. Danach werden wir unser Programm schreiben.
TList speichert, wie uns die Hilfe verrät, ein Array von Zeigern. Während diese Funktion früher noch von Hand programmiert werden musste, nimmt uns TList jetzt die Arbeit ab.
Ein TList-Objekt erstellt ihr wie folgt:
var UnsereListe: TList; ... UnsereListe := TList.Create;
Wenn wir fertig sind, entfernen wir das Ganze wieder aus dem Speicher:
UnsereListe.Free;
Um einen Pointer an die Liste anzufügen oder zu löschen, geben wir folgenden Code ein:
UnsereListe.Add(Zeiger1); // Hinzufügen UnsereListe.Delete(0); // löscht den Zeiger Nummer 0, der erste Index ist 0 { bevor der Zeiger aus der List gelöscht wird, muss der von ihm belegte Speicher wieder freigegeben werden, sonst haben wir es mit einer Speicherleiche zu tun }
Die Zeiger können auch innerhalb der Liste bewegt werden:
UnsereListe.Move(0,3); // verschiebt Element 0 an Position 3
Um noch mal alles auf einmal vor uns zu haben, folgendes kleines Programm:
var UnsereListe: TList; Zahl:^Integer; // Ein Pointer auf eine Integer-Variable loop:Integer; // einfach nur ne Variable begin UnsereListe:=TList.Create; New(Zahl); // Speicher für Zahl reservieren Zahl^:=5; // irgend einen Wert zuweisen UnsereListe.Add(Zahl); // Element 0 New(Zahl); // Speicher für Zahl nochmals reservieren Zahl^:=10; // irgend einen Wert zuweisen UnsereListe.Add(Zahl); // Element 1 { die Liste beinhaltet jetzt also zwei Zeiger auf Integervariablen mit folgendem Inhalt 5, 10 } UnsereListe.Move(0,1); // verschiebt Element 0 an Position 1 {die Liste sieht jetzt also so aus: 10, 5 } for loop:=0 to UnsereListe.Count-1 do begin Zahl:=UnsereListe.Items[loop]; Dispose(Zahl); end; { wir haben jetzt also den Speicher für jede Integer-Variable wieder freigegeben } while UnsereListe.Count>0 do UnsereListe.Delete(0); { alle Elemente werden wieder aus der Liste gelöscht } UnsereListe.Free; // raus aus dem Speicher end;
Jetzt, wo wir wissen, wie TList prinzipiell funktioniert, kann es losgehen.