Einzelnen Beitrag anzeigen

1aa

Registriert seit: 28. Sep 2008
48 Beiträge
 
Delphi XE5 Enterprise
 
#1

probleme beim löschen von TList elementen

  Alt 12. Jan 2014, 14:39
Zur Verwaltung mehrerer Streams habe ich mir eine Eigene Kleine Listenklasse erstellt
hinzufügen auslesen funktioniert alles ohne probleme nur beim löschen wirft es entweder die Fehlermeldung : " Ungültige Zeigeroperation" bzw wenn ich die Zeile (TObject(fInnerList.Items[i]).Free; ) weglasse habe ich logischer weise ein Speicherleak...
hab ich irgend was übersehen?

Delphi-Quellcode:
  TMyList = Class
    private
      fInnerList : TList;
      function GetItem(Index : Integer) : TStream;
      function GetCount : Integer;
    public
      constructor Create;
      destructor Destroy; override;
      function Add(aStream : TStream) : Integer;
      procedure Delete(Index : Integer);
      property Items[Index : Integer] : TStream read GetItem; default;
      property Count : Integer read GetCount;
  End;

.....

function TStreamList.Add;
begin
 Result := fInnerList.Add(tObject(aStream));
end;

constructor TStreamList.Create;
begin
  fInnerList := TList.create;
end;

procedure TStreamList.Delete(Index: Integer);
var i : Integer;
begin
i := Index;
 TObject(fInnerList.Items[i]).Free; //<-- Scheint den fehler zu werfen
 fInnerList.Items[i] := nil;
 fInnerList.Delete(i);
end;

destructor TStreamList.Destroy;
begin
  fInnerList.Free;
  inherited;
end;

function TStreamList.GetCount: Integer;
begin
  Result := fInnerList.Count;
end;

function TStreamList.GetItem(Index: Integer): TStream;
begin
 Result := tStream(fInnerList.Items[Index]);
end;
  Mit Zitat antworten Zitat