![]() |
AW: Fehlermeldung unerklärlich
Hallo und sorry, dass ich erst jetzt wieder antworte, hatte einiges um die Ohren.
Zitat:
Zitat:
Aber ja, ihr habt Recht, zur besseren Übersicht sollte man das alles vereinfachen. Wo wir dann gleich dabei sind, heißt CustomSort, dass Delphi da etwas bereitstellt? Zitat:
Zitat:
Delphi-Quellcode:
dann passiert rein gar nix, weil dann die Prozedur des ListView-Clicks beendet ist.
ItemFocused.Caption==''
|
AW: Fehlermeldung unerklärlich
Jetzt scheine ich doch tatsächlich weitergekommen zu sein.
Ich glaube nun mich der Fehlerquelle langsam zu nähern und bin nun wirklich nochmal Schritt für Schritt die Prozedur "Löschen" durchgegangen. Und es scheint wohl an dem Befehl "FreeAndNil()" zu liegen. Ich habe den jetzt mal auskommentiert, das Programm gestartet, drei Labels mal dynamisch erzeugt, das zweite Label dann mal angeklickt (was ja vorher dann schon zu dem Zusammenbruch führte) und siehe da, das Programm läuft weiter. Es fügt der ListView das angeklickte Label in Form eines Items hinzu und löscht das Label dann dementsprechend logischerweise nicht. Trotz allem bin ich im Endeffekt doch überfragt, da ich mir nicht erklären kann, wo genau dann das Problem liegt und wie ich das dann lösen kann. Könnt ihr mir helfen? Ich würde jetzt mal grob tippen, dass da irgendwas mit dem Speicherplatz nicht richtig läuft, sobald ein drittes Label dynamisch erzeugt wird. |
AW: Fehlermeldung unerklärlich
Delphi-Quellcode:
macht folgendes:
FreeAndNil(O);
Delphi-Quellcode:
Danach führt ein Zugriff auf O zu einem Fehler.
O.Free;
O := nil; 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... |
AW: Fehlermeldung unerklärlich
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. |
AW: Fehlermeldung unerklärlich
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:
Delphi-Quellcode:
Wenn kein Item fokussiert ist, gibt ItemFocused nil zurück. nil besitzt logischerweise keine Caption, ein Zugriff darauf verursacht also eine AV. [/edit]
var
Item: TListItem; begin Item := {form1. ist Quatsch, besser self. schreiben oder ganz weglassen}ListView1.ItemFocused; if Assigned(Item) then if Item.Caption <> '' then |
AW: Fehlermeldung unerklärlich
Zitat:
Jemand der bereits damit gearbeitet hat möge mich bitte ggf. berichtigen. |
AW: Fehlermeldung unerklärlich
Du meinst
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 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