![]() |
Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp
Hi,
ich habe immer mal wieder Probleme in meiner App, wo ich auf einem Kundensystem Fehlermeldungen, wie die folgende zu sehen bekomme:
Delphi-Quellcode:
Dies bedeutet doch, dass irgendein Objekt nicht mehr zur Verfügung steht, wenn es Released werden soll, sprich ich habe es sauber irgendwo entfernt, aber die App führt noch ein MouseUp-Event darauf durch, oder? Wie bekomme ich solche Fehlermeldungen endgültig raus? Einfach fangen in MouseUp geht leider nicht.
icTrainer $00000001007A5590 Classes.TComponent._Release() + 32
icTrainer $00000001006DAED4 _IntfClear(IInterface&) + 68 icTrainer $0000000100B4E0CC Fmx.Forms.TCommonCustomForm.MouseUp(Uitypes.TMouseButton, set of Classes.System_Classes__1, Single, Single, Boolean) + 544 icTrainer $0000000100ABBB44 Fmx.Platform.Ios.TFMXViewBase.DoLMouseUp(Single, Single, Boolean) + 96 icTrainer $0000000100AB4E78 Fmx.Platform.Ios.TFMXViewBase.touchesEnded(Iosapi.Foundation.NSSet, Iosapi.Uikit.UIEvent) + 244 icTrainer $00000001015F9D50 DispatchToDelphi + 144 UIKitCore $000000018287EA98 + 6748 CoreFoundation $0000000180402F24 + 32 CoreFoundation $00000001803D4568 + 588 CoreFoundation $00000001803CFAFC + 1012 CoreFoundation $00000001803E2D7C CFRunLoopRunSpecific + 572 GraphicsServices $000000019A6579A0 GSEventRunModal + 160 UIKitCore $0000000182C1505C + 1080 UIKitCore $00000001829AACE0 UIApplicationMain + 2028 icTrainer $0000000100AACDF8 Fmx.Platform.Ios.TPlatformCocoaTouch.Run() + 88 Grüße, Philipp |
AW: Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp
Ich seh keine Exception/Fehlermeldung (den Text).
Aber schonmal auf die Idee gekommen da zu gucken, wo es vorbei kommt, ob man dort was greifen kann? * TCommonCustomForm.MouseUp in Fmx.Forms * dort gibt es nur Einwas mit einem Interface (IControl) * und davor, wo das Objekt (vermutlich) noch existiert, gibt es eine überschreibbare Methode (ObjectAtPoint) Also ein
Delphi-Quellcode:
in deine Form rein,
function ObjectAtPoint(AScreenPoint: TPointF): IControl; override;
dort den Namen des letzten Objekts speichern/loggen, und wenn es knallt, dann nachsehn, was das mal war. Zitat:
Es kann auch ein ungültiger Zeiger sein oder sonstwas. |
AW: Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp
Wenn es bei _IntfClear knallt, könnte versehentlich die Klasse bereits freigegeben worden sein.
|
AW: Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp
Der Fehler ist
Zugriffsverletzung bei Adresse 00000001007A5590 beim Zugriff auf Adresse 2020200A3E746E65 At address: $00000001007A5590 (Classes.TComponent._Release() + 32) * TCommonCustomForm.MouseUp in Fmx.Forms -> dort kann ich die Exception warum auch immer nicht greifen; Den Punkt mit dem ObjectAtPoint werde ich mal ausprobieren. Vielleicht bringt dies eine Erleuchtung. Danke. Ich habe leider keinen Einfluss darauf, was hier noch im touchesEnded durch FMX angestoßen wird:
Delphi-Quellcode:
Natürlich kann es sein, dass ich hier ein Objekt freigegeben habe. Ich stoße aber ja die Funktion an der Stelle nicht an, dies macht die FMX-Implementierung.
icTrainer $00000001015F9D50 DispatchToDelphi + 144
UIKitCore $000000018287EA98 + 6748 CoreFoundation $0000000180402F24 + 32 CoreFoundation $00000001803D4568 + 588 CoreFoundation $00000001803CFAFC + 1012 CoreFoundation $00000001803E2D7C CFRunLoopRunSpecific + 572 GraphicsServices $000000019A6579A0 GSEventRunModal + 160 UIKitCore $0000000182C1505C + 1080 UIKitCore $00000001829AACE0 UIApplicationMain + 2028 icTrainer $0000000100AACDF8 Fmx.Platform.Ios.TPlatformCocoaTouch.Run() + 88 |
AW: Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp
Solche Fehler sind mir schon ein paar Mal passiert. Meistens hatte ich dann einen Button der das aktive Frame auf irgendeiner Weise freigegeben hat. Es passiert auch nur auf iOS, nicht so auf Android und Windows.
Das MouseUp-Event kommt ja (wahrscheinlich?) von einem Klick-Event der die Form frei gibt. Wenn du dir vorstellen kannst wo das sein könnte, versuch mal um den Inhalt des Klicks ein TThread.ForceQueue() zu machen. |
AW: Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp
Die Interfaces bei TComponent/TControl haben keine Referenzzählung.
Speicherverwaltung wird über TComponent des FMX/VCL geregelt und Interfaces darauf sind nur während der Existenz (vor Free/Destroy) gültig. Gibt man z.B. mitten im OnClick das angeklickte Objekt frei, dann knallt es nunmal gerne. |
AW: Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp
Einen ersten Grund habe ich schon mal: Wenn ich ein Parent auf einem Element setze, welches genau dieses Parent schon hat, dann kommt genau dieser Fehler (zumindest unter Android) nachgestellt. in FMX.TForms.TCommonCustomForm.MouseUp. Das konnte ich einfach entfernen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 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