AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Invalid Pointer TObjectList

Ein Thema von bl3nder · begonnen am 19. Aug 2008 · letzter Beitrag vom 26. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
bl3nder

Registriert seit: 18. Aug 2006
89 Beiträge
 
#1

Invalid Pointer TObjectList

  Alt 19. Aug 2008, 15:13
Hi Leute,

Ich checks einfach nicht wo der Fehler liegen kann:

Ich möchte meine Objekte und Listen alle freigeben, weil sich das Programm sonst extrem aufbläht.

Hier ein Auszug meines Codes:

Delphi-Quellcode:

    FList := TObjectList.Create;
    FCSearch := Model.TComputerSearch.Create;
    FMyCCriteria := Model.TComputerAttributes.Create;

    //...


    FList := FCSearch.DBSearch('vague',FMyCCriteria); // FList wird mit "TComputer"-Objekten befüllt

    I := 0;
    while (I<FList.Count-1) do
      begin
        FMyComputer := Model.TComputer.Create;
        FMyComputer := FList[I] as Model.TComputer;

        // Fill the Grid with the information of the FMyComputer object
        Grid.Cells[0,Grid.RowCount-1] := IntToStr(FMyComputer.GetAttributes.GetID);
        Grid.Cells[1,Grid.RowCount-1] := FMyComputer.GetAttributes.GetName;
        Grid.Cells[2,Grid.RowCount-1] := FMyComputer.GetAttributes.GetComment;
        Grid.Cells[3,Grid.RowCount-1] := FMyComputer.GetAttributes.GetModel;

        Grid.RowCount := Grid.RowCount +1;

        FMyComputer.Free;
        Inc(I);
      end;

  FList.Clear; // UNGÜLTIGE ZEIGEROPERATION
  FList.Free; // UNGÜLTIGE ZEIGEROPERATION

  FCSearch.Free;
  FMyCCriteria.Free;
Das Programm läuft trotz des Fehlers aber den Fehler möchte ich natürlich wegbekommen

Weiß einer Rat ?
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Invalid Pointer TObjectList

  Alt 19. Aug 2008, 15:17
TObjectList gibt alle Objekte die es enthält selber frei - außer man instantiiert es mit AOwnsObjects = False

[edit]Parametername korrigiert.[/edit]
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
bl3nder

Registriert seit: 18. Aug 2006
89 Beiträge
 
#3

Re: Invalid Pointer TObjectList

  Alt 19. Aug 2008, 15:25
Ok Vielen Dank, wusste ich nicht.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Invalid Pointer TObjectList

  Alt 19. Aug 2008, 15:30
FMyCompuer musst du auch nicht erzeugen, bevor du auf die Liste zugreifst. Sonst hast du ein Speicherleck.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
bl3nder

Registriert seit: 18. Aug 2006
89 Beiträge
 
#5

Re: Invalid Pointer TObjectList

  Alt 19. Aug 2008, 15:31
Hmm ok danke schonmal guter Anfang die Lecks zu finden. Ich weiß sonst echt nicht mehr wo die 3KB pro DB abfrage herkommen :/
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Invalid Pointer TObjectList

  Alt 19. Aug 2008, 15:32
Zitat von bl3nder:
Hmm ok danke schonmal guter Anfang die Lecks zu finden. Ich weiß sonst echt nicht mehr wo die 3KB pro DB abfrage herkommen :/
Autsch, na dann mal viel Glück beim Suchen ...
PS: Try-finally nutzen
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Invalid Pointer TObjectList

  Alt 19. Aug 2008, 16:53
Zitat von Apollonius:
FMyCompuer musst du auch nicht erzeugen, bevor du auf die Liste zugreifst. Sonst hast du ein Speicherleck.
Das Gleiche gilt für FList
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
bl3nder

Registriert seit: 18. Aug 2006
89 Beiträge
 
#8

Re: Invalid Pointer TObjectList

  Alt 20. Aug 2008, 10:18
Zitat von Neutral General:
Zitat von Apollonius:
FMyCompuer musst du auch nicht erzeugen, bevor du auf die Liste zugreifst. Sonst hast du ein Speicherleck.
Das Gleiche gilt für FList
Kann ich nicht bestätigen. Habe durch das Weglassen von

FList := TObjectList.Create; eine Adressverletzung bekommen... ?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Invalid Pointer TObjectList

  Alt 20. Aug 2008, 10:20
Hi,

Delphi-Quellcode:
FList := TObjectList.Create;
FCSearch := Model.TComputerSearch.Create;
FMyCCriteria := Model.TComputerAttributes.Create;

  //... Sollte hier zwischen nicht mit FList gearbeitet werden dann ist obiges Create überflüssig und erzeugt ein Speicherleck
  // WENN hier mit FList gerarbeitet wird, dann muss es aber vor der Zeile hier unten wieder freigegeben werden.
  // Sonst gibts ebenfalls ein Speicherleck!

FList := FCSearch.DBSearch('vague',FMyCCriteria); // FList wird mit "TComputer"-Objekten befüllt
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Invalid Pointer TObjectList

  Alt 20. Aug 2008, 10:22
Zitat von bl3nder:
Habe durch das Weglassen von

FList := TObjectList.Create; eine Adressverletzung bekommen... ?
Vlt. weil du zwischen "FList := TObjectList.Create;" und "FList := FCSearch.DBSearch('vague',FMyCCriteria);" auf FList zugreifst?! Sry, wir kennen deinen Code ya nicht
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:00 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