AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung iOS Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp
Thema durchsuchen
Ansicht
Themen-Optionen

Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp

Ein Thema von philipp.hofmann · begonnen am 27. Dez 2021 · letzter Beitrag vom 17. Jan 2022
Antwort Antwort
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#1

Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp

  Alt 27. Dez 2021, 23:05
Hi,

ich habe immer mal wieder Probleme in meiner App, wo ich auf einem Kundensystem Fehlermeldungen, wie die folgende zu sehen bekomme:

Delphi-Quellcode:
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
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.

Grüße, Philipp
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp

  Alt 27. Dez 2021, 23:22
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 function ObjectAtPoint(AScreenPoint: TPointF): IControl; override; in deine Form rein,
dort den Namen des letzten Objekts speichern/loggen,
und wenn es knallt, dann nachsehn, was das mal war.



Zitat:
Dies bedeutet doch, dass irgendein Objekt nicht mehr zur Verfügung steht
Nicht unbedingt.
Es kann auch ein ungültiger Zeiger sein oder sonstwas.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#3

AW: Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp

  Alt 28. Dez 2021, 00:13
Wenn es bei _IntfClear knallt, könnte versehentlich die Klasse bereits freigegeben worden sein.
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp

  Alt 28. Dez 2021, 00:16
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:
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
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.
  Mit Zitat antworten Zitat
junglist

Registriert seit: 21. Jul 2015
Ort: Schweiz
36 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp

  Alt 28. Dez 2021, 08:31
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp

  Alt 28. Dez 2021, 13:01
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Nicht fangbare Exception in Fmx.Forms.TCommonCustomForm.MouseUp

  Alt 17. Jan 2022, 22:36
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.
  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 22:37 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