AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

probleme beim löschen von TList elementen

Ein Thema von 1aa · begonnen am 12. Jan 2014 · letzter Beitrag vom 17. Jan 2014
Antwort Antwort
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
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.111 Beiträge
 
Delphi 12 Athens
 
#2

AW: probleme beim löschen von TList elementen

  Alt 12. Jan 2014, 14:47
Wie fügst du die Streams hinzu?
Und was passiert mir den Streams, die du hinzugefügt hast? (also die in der Variable, welche an Add übergeben wurde)


Und warum keine TObjectList oder besser noch eine TObjectList<TStream> ?
(vorallem bei Letzerem kann deine komplette Klasse weg und auch bei Ersterem würde ich eher überschreiben/ableiten und nicht kapseln)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (12. Jan 2014 um 14:51 Uhr)
  Mit Zitat antworten Zitat
1aa

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

AW: probleme beim löschen von TList elementen

  Alt 12. Jan 2014, 15:02
ok vergiss die frage. War mal wieder erst fragen dann denken. Hab den fehler gefunden, lag an einer Funktion mit der ich einen Stream hinzugefügt habe, da hatte ich noch ein .free drin des wegen ging es nicht.

Aber trotzdem danke!

PS: An alle noch ein gesundes neues Jahr
PPS An die Rechtschreib Überwachung hoffentlich so genehm

Geändert von 1aa (12. Jan 2014 um 15:14 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: probleme beim löschen von TList elementen

  Alt 12. Jan 2014, 15:06
Du hast paar Punkte und Kommas vergessen.
  Mit Zitat antworten Zitat
Gutelo

Registriert seit: 29. Sep 2013
152 Beiträge
 
#5

AW: probleme beim löschen von TList elementen

  Alt 17. Jan 2014, 02:26
Code:
procedure OnTerminate();
begin
  Rechtschreibung.Free;
end;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz