AGB  ·  Datenschutz  ·  Impressum  







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

Fehlermeldung unerklärlich

Ein Thema von Naryxus · begonnen am 30. Sep 2011 · letzter Beitrag vom 4. Okt 2011
Antwort Antwort
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Fehlermeldung unerklärlich

  Alt 2. Okt 2011, 09:22
FreeAndNil(O); macht folgendes:
Delphi-Quellcode:
O.Free;
O := nil;
Danach führt ein Zugriff auf O zu einem Fehler.
Wenn das Objekt sebst schon nicht mehr existierte, scheitert FreeAndNil schon selbst.

Benutze beim schrittweisen debuggen mal noch die überwachten Ausdrücke, um Deine Objekte zu untersuchen.

Wenn Du Deinen Quelltext mal aufgeräumt hast, kannst Du ihn ja nochmal zeigen. Vielleicht fällt jemandem dann noch etwas auf...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Naryxus

Registriert seit: 30. Sep 2011
6 Beiträge
 
#2

AW: Fehlermeldung unerklärlich

  Alt 2. Okt 2011, 11:38
Hmmm... Ich habe es versucht jetzt mal anders zu lösen.
Und zwar wird gleichzeitig zum Erzeugen der Labels ein dynamisches Array mit erstellt, bzw. aktualisiert, welches dann die Namen der erzeugten Labels mitspeichert. Funktioniert auch so weit gut. In der Prozedur "Löschen" wird dann das jeweilige Array-Element wieder gelöscht und das dynamische Array so aktualisiert, dass keine Lücken durch das Löschen entstehen. Danach werden alle Controls der Groupbox gelöscht, da die Labels alle Childs von dieser Groupbox sind. Das funktioniert auch, sodass jetzt, auch wenn 3 Labels erzeugt wurden, alle gelöscht werden.
Ich habe mir jetzt gedacht, dass ich dann einfach am Ende der Prozedur für jedes Element in dem Array ein neues Label erstelle.
Allerdings sagt das Programm dann auch wieder "Gute Nacht", weil angeblich schon ein Element mit dem Namen XY existieren würde. Ich habe doch aber alle erzeugten Labels über die Eigenschaft "Controls" gelöscht. Oder bleiben da trotzdem die Labels bestehen? Ich habe dann auch schon mal getestet, ob nach dem Löschen der Labels noch ein Label exisitiert (mittels FindComponent) und das ergab dann auch keinen Treffer, also müsste es rein theoretisch gelöscht sein.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#3

AW: Fehlermeldung unerklärlich

  Alt 2. Okt 2011, 11:45
Setz doch einfach mal ReportMemoryLeaksOnShutdown auf true (je nach Delphi-Version schon eingebaut oder mittels Installation von FastMM nachrüstbar). Beim Beenden des Programms wird Dir dann schon angezeigt, ob da nicht freigegebene Labels existieren.

[edit]
Zitat:
if(form1.ListView1.ItemFocused.Caption<>'') then //Prüfung ob ein Element angeklickt wurde
Und was ist, wenn keine Items in der ListView sind oder wenn keines fokusiert ist?

Genau, dann ist ItemFocused = NIL und der Zugriff auf Caption kann nur noch schief gehn.
Dieser Einwand ist richtig und wichtig und hat mit Deinen Labels nicht das Geringste zu tun. Besser so:
Delphi-Quellcode:
var
  Item: TListItem;
begin
  Item := {form1. ist Quatsch, besser self. schreiben oder ganz weglassen}ListView1.ItemFocused;
  if Assigned(Item) then
    if Item.Caption <> 'then
Wenn kein Item fokussiert ist, gibt ItemFocused nil zurück. nil besitzt logischerweise keine Caption, ein Zugriff darauf verursacht also eine AV. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 2. Okt 2011 um 11:53 Uhr)
  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 18:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz