Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Exception beim Beenden der Anwendung (CheckListBox) (https://www.delphipraxis.net/191141-exception-beim-beenden-der-anwendung-checklistbox.html)

Jean312 13. Dez 2016 12:20

Exception beim Beenden der Anwendung (CheckListBox)
 
Hallo,

ich möchte mich wiedermal an die Spezialisten wenden.

Ich habe eine Checklistbox, in welcher die Dateien aus einem gewählten Verzeichnis angezeigt werden. Die Checklistbox ist in einer ScrollBox, welche in anderes Form per Parent-Zuweisung geholt wird.

Die entsprechenden Dateien werden alle in der Checklistbox ordentlich angezeigt.
Sobald ich aber eine oder mehrere Einträge angeklickt habe (checked true oder false ist egal), wird mir beim Beenden der Anwendung eine Exception ausgeloest:

(
Exception: External: SIGSEGV
\include\customlistbox.inc
if (AIndex < 0) or (AIndex >= Items.Count) then RaiseIndexOutOfBounds(AIndex)
)

Der Debugger springt auch an die entsprechende Stelle in der 'customlistbox.inc'. AIndex wird mit dem Wert 0 angezeigt, weshalb ich nicht verstehe, warum dann die Exception ausgelöst wird bei 0.

Wenn in der Checklistbox nach dem Laden nichts angeklickt wird, erscheint beim Beenden der Anwendung keine Exception.

Bin jetzt mit meinem Latein und meinen Nerven am Ende. Hat jemand eine Idee? Ein Clear auf die checklistbox vor dem Beenden der Anwendung bringt auch keinen Erfolg.

Hoffe auf eure Hilfe. Danke.

----------
Win10
Lazarus 1.6.2

EWeiss 13. Dez 2016 12:26

AW: Exception beim Beenden der Anwendung (CheckListBox)
 
Der Fehler sagt es doch schon.
IndexOutOfBounds

wie ist denn AIndex definiert?
Wenn die ListBox bei 1 anfängt ist das nicht verwunderlich.
Vergleiche mal den Count.

gruss

ConnorMcLeod 13. Dez 2016 13:24

AW: Exception beim Beenden der Anwendung (CheckListBox)
 
Schätze, daß beim Beenden die CheckListBox zerstört wird und dabei kurz zuvor die Items geleert worden sind. Dann ist der Count = 0.

Jean312 13. Dez 2016 15:06

AW: Exception beim Beenden der Anwendung (CheckListBox)
 
Hallo,

danke für eure Antworten.

Der Index geht bei 0 los, und somit stimmte auch der Count.
Es ist das erste Mal, dass ich mit der CheckListBox arbeite. Sollte doch nahezu ähnlich sein wie mit der ListBox, dachte ich.

Wie kann man denn den AIndex definieren? Der ist doch der Parameter in der 'customlistbox.inc'.

Ich prüfe nun beim Beenden der Anwendung, ob der Count > 0 ist und mache dann ein clear. Das funktioniert. Hatte es schon mit dem clear vorher probiert, aber das war nicht an der richtigen Stelle (Denkfehler von mir).
Mit der normalen ListBox kenne ich dieses Problem nicht. Naja, vielleicht erschließt es sich noch mir.

Danke nochmal. :)

Luckie 13. Dez 2016 16:25

AW: Exception beim Beenden der Anwendung (CheckListBox)
 
Dann zeig mal den Code, der beim Beenden der Anwendung ausgeführt wird.

Jean312 14. Dez 2016 06:00

AW: Exception beim Beenden der Anwendung (CheckListBox)
 
Code:
if checklistbox.count>0 then checklistbox.clear;

DeddyH 14. Dez 2016 06:56

AW: Exception beim Beenden der Anwendung (CheckListBox)
 
Prüft Lazarus denn nicht selbst beim Clear, ob überhaupt Einträge vorhanden sind?

Blup 14. Dez 2016 11:34

AW: Exception beim Beenden der Anwendung (CheckListBox)
 
Zitat:

Zitat von Jean312 (Beitrag 1355989)
Die Checklistbox ist in einer ScrollBox, welche in anderes Form per Parent-Zuweisung geholt wird.

Das sagt doch schon alles. Jede Komponente hat neben dem Parent auch noch den Owner, der für die Freigabe zuständig ist. Das ist normalerweise das Formular, für welches die Komponente erzeugt wurde.


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