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;