AGB  ·  Datenschutz  ·  Impressum  







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

Probleme beim Erstellen von TList

Ein Thema von Tiuri · begonnen am 29. Apr 2007 · letzter Beitrag vom 29. Apr 2007
Antwort Antwort
Benutzerbild von Tiuri
Tiuri

Registriert seit: 22. Sep 2006
Ort: Celle
38 Beiträge
 
Delphi 2005 Personal
 
#1

Probleme beim Erstellen von TList

  Alt 29. Apr 2007, 16:44
Hi,
ich benutze Delphi3 und habe ein Problem mit TList.
Ich habe einen Typen deklariert, der unter private das Feld FList vom Typ TList hat.
Der Typ ist außerdem so deklariert, dass bei Create FList.Create und bei Free FList.Free ausgeführt werden.
Ich habe ein Test-Programm geschrieben, in der ich eine Instanz Data meines Types benutze.
Bei TForm1.Create wird Data.Create aufgerufen und bei TForm1.Close Data.Free.
Wenn ich das Programm starte und schließe, kommt jedesmal die Fehlermeldung
Zugriffsverletzung bei Adresse 0042B769 in Modul 'test.exe' Lesen von Adresse 00000058.
Wenn ich jedes Vorkommen von FList auskommentiere, kommen diese Fehler nicht. Was muss ich tun?
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
198 Beiträge
 
Delphi XE Professional
 
#2

Re: Probleme beim Erstellen von TList

  Alt 29. Apr 2007, 16:55
Hallo Tiuri,

FList.Create ist auch nicht der richtige Aufruf. FList ist ja die Variable, die ist anfangs erstmal undefiniert. Du musst Ihr also einen Wert zuweisen:
FList := TList.Create Erst wenn Du das gemacht hast, kannst Du auf FList zugreifen, z.B. im Destruktor mit FreeAndNil(FList) .

Das gleiche gilt für dein Hauptprogramm. Erst mit FData := TData.Create initialisieren, und später mit FreeAndNil(FData); freigeben.

Dann sollte es einwandfrei funktionieren.

PS: Schau Dir statt TList mit TObjectList an, bei der Variante musst Du Dich nicht darum kümmern, die einzelnen Einträge in der Liste freizugeben, das geschieht automagisch.

Gruß,
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Tiuri
Tiuri

Registriert seit: 22. Sep 2006
Ort: Celle
38 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Probleme beim Erstellen von TList

  Alt 29. Apr 2007, 17:00
vielen dank, das ist es gewesen.
Gibt es in delphi 3 auch TObjectList? Ich habs in meiner Hilfe nicht gefunden.
Hat FreeAndNil irgendwelche Vorteile gegenüber Free?
  Mit Zitat antworten Zitat
Apollonius

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

Re: Probleme beim Erstellen von TList

  Alt 29. Apr 2007, 17:53
TObjectlist ist bei meinem Delphi in der Unit contnrs. Bei FreeAndNil wird die Objektreferenz auf nil gesetzt, sodass du danach mit if Objekt=nil prüfen kannst, ob du eine gültige Instanz hast. Bei free wird zwar die Instanz freigegeben, aber die Referenz zeigt noch in den Speicher, sodass sie nicht nil ist.
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
Antwort Antwort


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