Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi während Suspend des Threads ListView-Data-Pointer Zerstörung (https://www.delphipraxis.net/29797-waehrend-suspend-des-threads-listview-data-pointer-zerstoerung.html)

sieppl 14. Sep 2004 22:39


während Suspend des Threads ListView-Data-Pointer Zerstörung
 
Hallo,

ich habe ein wirklich kurioses Problem. Ich habe einen Thread der Thumbnails für einen ListView erzeugt. Dabei werden wichtige Daten ausgelesen und als Data-Pointer an die ListView-Items gehängt. Diese Pointer-Objekte werden bei einem Refresh(ausgelöst druch TreeView-Wechsel) natürlich manuell gelöscht. Das ganze funktioniert wunderbar, solange ich mich auf der Festplatte befinde.
Wähle ich meine Kamera aus, werden die Thumbs angezeigt und der Thread supendiert wie gewohnt. Wenn ich nun einen Refresh auslöse, fehlt manchmal vom 2. Objekt der Data-Pointer und beim Löschen gibt es daduch einen Crash. Dabei werden die Objekte IMMER gleich erstellt, ob nun von einer Kamera oder Festplatte. Der Data-Pointer des 2. Objektes ist vor dem Refresh noch vorhanden.
Mein Programm greift erst wieder auf die Objekte zu, wenn sie gelöscht werden sollen.
Dahinter scheint keine Logik zu stecken. Ich habe keine Ahnung an welcher Stelle ausgerechnet das 2. Objekt verändert wird.
Also wer eine Digital-Kamera hat, die ein virtuellen Ordner unter Arbeitsplatz einrichtet und mal ein ganz tolles Problem lösen möchte, soll bitte posten, dann packe ich den Code in den Anhang.
Es dauert ein bisschen die relevanten Teile zusammenzustellen, daher mache ich es erst, wenn sich jemand die Sache ernsthaft anschauen möchte.

Grüße

Sebastian

PS: Ohne Diggi-Cam lässt sich der Fehler nicht reproduzieren. Hat bei mir zumindest nicht geklappt.

sieppl 14. Sep 2004 23:23

Re: während Suspend des Threads ListView-Data-Pointer Zerstö
 
macht euch nicht die Mühe, der Fehler entsteht bei dem inherited-Aufruf von TSHellTreeView.CanChange hat zwar nichts mit dem ListView zu tun, ich habe aber direkt davor und danach meine gespeicherten Werte überprüft und der Fehler ensteht de facto dort!
Kann hier jemand Bestätigen, dass TSHellTreeView fehlerhaft ist? (Unlogische Fehler oder ähnliche Probleme?)

Grüße

Sebastian

[UPDATE:]

Es scheint der ShellNotifier-Thread zu sein, der mir mein Objekt zerstört. Vielen Dank an diese Komponente für 24 h Ärger und Frust. :party:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 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