TList

Tags:    delphi

Hvordan sletter jeg alt i en TList?


<p><a href="http://www.udvikleren.dk/eforum/thread.php4?f=2&t=13">Læs evt om hvorfor jeg gerne vil vide det.</a></p>

Emil Melgaard
emil.melgaard@private.dk



6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
<quote>Hvordan sletter jeg alt i en TList?
</quote>

Du kan gøre det med DinTList.Clear; men vær opmærksom på at hvis du har tilføjet objekter, som du jo har, i listen fjerner du blot referencerne til disse objekter - objekterne bliver ikke frigivet. Du kan frigive dem ved at gøre noget i stil med:

for i := DinTList.Count - 1 downto 0 do
FreeAndNil(DinTList.Items as TLabel);

Jeg er ikke sikker på det er nødvendigt at typecaste men det finder du jo nok ud af :)




Der er nogle problemer med mit link.
Det skulle henvise til mit emne Label[I].

Emil Melgaard
emil.melgaard@private.dk



Glem lige den for løkke jeg skrev før og brug følgende:
var
lbl: TLabel;
...
for i := DinTList.Count - 1 downto 0 do
begin
lbl := DinTList.Items;
FreeAndNil(lbl);
end;

Det virker :)




User
Bruger #58 @ 14.08.01 19:52
>Glem lige den for løkke jeg skrev før og brug følgende:

Man kan også gøre det uden en variabel:

while List.Count > 0 do
begin
TObject(List[0]).Free;
List.Delete(0);
end;

Niels
http://www.niller.f2s.com/ - always there...
http://g4s.dnsq.org/ - when I'm online!



<quote>>Glem lige den for løkke jeg skrev før og brug følgende:

Man kan også gøre det uden en variabel:

while List.Count > 0 do
begin
TObject(List[0]).Free;
List.Delete(0);
end;

Niels
http://www.niller.f2s.com/ - always there...
http://g4s.dnsq.org/ - when I'm online!</quote>

Jeg kan ikke få nogle af jeres svar til at fungere, der ligger altid et "lig" fra forige runde.

Emil Melgaard
emil.melgaard@private.dk



<quote>
Jeg kan ikke få nogle af jeres svar til at fungere, der ligger altid et "lig" fra forige runde.
</quote>

Følgende viser en måde hvorpå du kan tilføje 10 elementer til en TList og fjerne dem igen:

procedure TForm1.Button1Click(Sender: TObject);
var
List: TList;
i: Integer;
Lbl: TLabel;
begin
List := TList.Create();
try
for i := 0 to 9 do
List.Add(TLabel.Create(Form1));
ShowMessage('Der er nu ' + IntToStr(List.Count) + ' elementer i listen');
finally
for i := List.Count - 1 downto 0 do
begin
Lbl := List.Items;
FreeAndNil(Lbl);
end;
List.Clear();
ShowMessage('Der er nu ' + IntToStr(List.Count) + ' elementer i listen');
FreeAndNil(List);
end;
end;




t