Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Clear von TList überschreiben mit Objekten

  Alt 3. Jul 2007, 10:11
Hallo,

soll Clear die Liste leeren oder nur die Objekte freigeben,
in ersterem Fall fehlt was

Delphi-Quellcode:
procedure TPageCollection.Clear;
var
  i: Integer;
begin
  for i := FInnerList.Count - 1 downto 0 do
  begin
    TObject(FInnerList.Items[i]).Free;

// das fehlt
    FInnerList.Delete(i);

// oder ungetestet
// FInnerLIst.Remove(FInnerList.Items[i])

  end;
end;
Durch Free des Objektes wird zwar as Objekt freigegeben,
aber nicht der Listeneintrag (Pointer),
Count bliebt also immer gleich, nur der Pointer zeugt ins Nirvana.

Ich würde per {$IFDEF DEBUG} eh immer FreeAndNIL benutzen,
dann bekommt du wenigstens (hoffentlich) ne bessere Fehlermeldung.


Heiko
PS: Schon mal TObjectlist versucht ?
Heiko
  Mit Zitat antworten Zitat