AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zugriffsverletzung bei TObjectlist.delete
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung bei TObjectlist.delete

Ein Thema von ozz · begonnen am 19. Mär 2007 · letzter Beitrag vom 23. Mär 2007
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#21

Re: Zugriffsverletzung bei TObjectlist.delete

  Alt 21. Mär 2007, 11:23
Das Problem wird wohl eher in: TStringstream zu finden sein, was immer das auch ist...

Bye Christian
Christian
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#22

Re: Zugriffsverletzung bei TObjectlist.delete

  Alt 21. Mär 2007, 11:43
Zitat von Kedariodakon:
Das Problem wird wohl eher in: TStringstream zu finden sein, was immer das auch ist...
Ist das auf mein Vorposting bezogen?
Nun, mein Posting muss mit dem Problem auch nicht unbedingt zu tun haben.
Es wäre trotzdem reichlich sinnig, die im Konstruktor erzeugte Liste später im Destruktor auch wieder freizugeben (und nicht nur die Listeninhalte).

TStringStream gibt es (in der Unit Classes - siehe OH).
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#23

Re: Zugriffsverletzung bei TObjectlist.delete

  Alt 21. Mär 2007, 17:07
Danke für die Hilfe IngoD7,Kedariodakon und Jelly.
Leider besteht das Problem immer noch (auch mit Jelly Ableitung).Damit kann ich aber das Problem zumindestens in der Unit ausschließen. Ich habe noch ein kleinen Schnitzer gefunden. Daher muß in nochmal in Ruhe schauen.

@IngoD7
Free habe ich schon mal propiert. Ist in der Liste oben (Original Post)

@Jelly
Danke für das Code Snippet. Ich lerne gerne immer dazu.... auch was das pushen angeht. Ich werde mich dran halten.
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#24

Re: Zugriffsverletzung bei TObjectlist.delete

  Alt 21. Mär 2007, 17:34
Zitat von IngoD7:
TStringStream gibt es (in der Unit Classes - siehe OH).
Ah ok, hatte damit noch nicht gearbeitet =p


Aber mal so nebenbei, was ist das da für ein Käse?
Delphi-Quellcode:
function TStreamlist.Additem(Item: TStringstream): Integer;
var TagType: TStringstream;
begin
    TagType:=TStringstream.Create('');
    TagType:=Item;
    Result:= FStreamObjectList.add(TagType);
end;
Warum wird da eigendlich ein neuer Stream erstellt, aber schlussendlich der alte hinzugefügt?

Nunju, vielleicht magst du uns ja ein Beispiel Projekt anhängen, dann kann man ja mal drüberschaun, wenn zeit ist

Bye Christian
Christian
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#25

Re: Zugriffsverletzung bei TObjectlist.delete

  Alt 21. Mär 2007, 17:37
Hallo Leute ich habe es gefunden. Nochmal vielen Dank für die vielen Tips.Falls es jemand wissen will, hier die Ursache
Delphi-Quellcode:
procedure ThreadResult(ContentStream: TStringStream);
....
    Content:=TStringStream.Create('');
    Content.Position:=0;
    ContentStream.Position:=0;
    Content.CopyFrom(ContentStream,ContentStream.Size);
    index:=FResultlist.Add(Content);//<-war vorher ContentStream
...
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#26

Re: Zugriffsverletzung bei TObjectlist.delete

  Alt 21. Mär 2007, 17:41
Hallo Kedariodakon,
eigentlich sollte der "Käse" nur den Stream umkopieren, die aus einem Thread kommen. Der wird zerstört,wenn der Thread beendet wird. Das war je in diesem Fall genau das Problem. Prinzip wie im vorheriges Posting.
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#27

Re: Zugriffsverletzung bei TObjectlist.delete

  Alt 21. Mär 2007, 17:46
Auf gut deutsch du hast das falsche in die Liste getan, right?

Bye Christian
Christian
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#28

Re: Zugriffsverletzung bei TObjectlist.delete

  Alt 21. Mär 2007, 17:53
Hallo Kedariodakon,
GENAU!
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#29

Re: Zugriffsverletzung bei TObjectlist.delete

  Alt 21. Mär 2007, 18:50
Zitat von ozz:
@IngoD7
Free habe ich schon mal propiert. Ist in der Liste oben (Original Post)
Ja, glaube ich das denn ...?
Du hast es nicht probiert. Lies doch mal, was genau ich geschrieben habe.

Nochmal:
Du hast in deiner Klasse ein Objekt vom Typ TObjectList (FStreamObjectList). Dieses Objekt wird im Konstruktor erzeugt:
Delphi-Quellcode:
constructor TStreamlist.create;
begin;
  inherited create;
  FStreamObjectList:=TObjectList.Create(true);
end;
Dieses Objekt FStreamObjectList muss auch wieder freigegeben werden!
Das geht so:
Delphi-Quellcode:
destructor TStreamlist.destroy;
begin
    FStreamObjectList.Free;
    inherited Destroy;
end;
Und wenn du das dann endlich so tust, dann kannst du dir deinen Code sparen, mit dem du die Elemente deiner Liste freigibst (das ist nicht die Liste selbst, es sind lediglich die Elemente!). Denn das Freigeben der Objektliste FStreamObjectList gibt automatisch die Elemente dieser Liste mit frei.

Ufff ...
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#30

Re: Zugriffsverletzung bei TObjectlist.delete

  Alt 21. Mär 2007, 19:35
Hallo IngoD7,
herzlichen Dank für den Hinweis. Ich habe dich verstanden und auch dein Anliegen. Ich habe die Test genau so gemacht, wie du es vorgeschlagen hast. Ich habe auch das Free eingebaut und das Delete entfernt. Danke nochmal!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 19:43 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