![]() |
Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Delphifreunde!
Schon wieder kann man sich mit Banalitäten stundenlang beschäftigen, ohne einer Lösung spürbar näherzukommen. Das angehängte Kleinstprojekt ist ein VCL-/FMX-Gemischtformularprogramm. Es startet mit "Form1", das ein VCL-Formular ist. Optional kann über einen Button das FMX-Formular "Form2" angezeigt werden. Compiliere ich das mit Delphi 10.1, hat das erhaltene Programm folgendes (Fehl-)Verhalten: Solang ich Form2 nicht aufrufe, kann ich Form1 schließen und damit das Programm ordnungsgemäß beenden. Lasse ich mir jedoch Form2 anzeigen, gibt es beim Schließen des Form1 eine Absturz-Fehlermeldung, aus der ich nicht schlau werden. Mithilfe der beiden Showmessages in den Finalisationsabschnitten läßt sich das Auftreten des Fehlers immerhin auf "nach Finalisation der Unit 2" eingrenzen. Drollig ist auch, daß unter Windows 7 die Finalisation beider Units korrekt ausgegeben wird (wenn auch mit unterschiedlichen Shomessage-Boxen), unter Windows XP nur die Finalisation der Unit 2. Und das süffisanteste: Compiliere ich dieses Mikroprojekt mit dem nun schon etwas "bejahrten" XE2, verhält sich dessen Compilat korrekt. Weiß jemand, woran das liegen und wie man das beseitigt bekommen könnte? Evtl. wäre auch interessant, wie es sich mit anderen Delphi XEx-Compilaten verhält. Danke und Gruß Delphi-Laie |
AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1
FireMonkey und die VCL sind zwei grundverschiedene Frameworks, die nicht dazu gedacht sind, so ohne Weiteres in einem Projekt zu koexistieren. Du wirst mit dieser Kombination diverse seltsame Resultate haben - dass es unter XE2 offenbar geht, ist dem damaligen Entwicklungsstand geschuldet. Die Richtung von FMX ist mittlerweile eine andere, eigenständige.
Es gibt sogenannte "Container", die ein FMX-Formular in ein VCL-Formular einbetten können, zum Beispiel: ![]() |
AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1
Wobei der Container von Parnassus seine Limitationen und "Known Bugs" hat.
Die Beste Erfahrung mit dem Mischen von VCL und FMX-Objekten habe ich bislang noch mit dem Hydra-Framework gemacht: ![]() Das ist allerdings kostenpflichtig. Insgesamt würde ich aber von diesem Vorgehen ganz abraten. Unter Windows geht das ja noch, aber wenn man sein Programm dann auch für den MAC anbieten will, kommt man mit VCL-Komponenten auf jeden Fall nicht mehr weiter. Also lieber alles gleich FMX-Kompos nehmen. Delphi liefert schon eine Menge mit und in der Zwischenzeit gibt es auch für FMX ein großes Angebot von Drittherstellern (u.a. auch TMS). |
AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1
Danke Euch beiden!
Vor kurzem sah ich ![]() Nebenbei fiel mir ein Fehler in der Hilfe auf, den Delphi / RAD-Studio XEx anscheinend auch schon wieder seit Jahren, wohl seit XE2, mit sich herumschleppt, warum prüft das niemand, fällt das niemandem auf, warum meldet das niemand, was auch immer. In der FMX-Hilfe steht unter TAlphaColor: "Der Wert $FFFF0000 (Delphi) oder 0xFFFF0000 (C++) repräsentiert reines Blau, $FF00FF00 (Delphi) oder 0xFF00FF00 (C++) reines Grün und $FF0000FF (Delphi) oder 0xFF0000FF (C++) reines Rot. $FF000000 (Delphi) oder 0xFF000000 (C++) ist Schwarz und $FFFFFFFF (Delphi) oder 0xFFFFFFFF (C++) Weiß." Richtig sind hingegen in der Delphi-Notation (nach meinen Experimenten mit dem Drawline-Befehl): $FF0000FF Blau $FF00FF00 Grün $FFFF0000 Rot $FF000000 Schwarz $FFFFFFFF Weiß , also Rot und Blau vertauscht. Warum entdecke ausgerechnet ich Amateur wiederholt (!) bei der ersten Begegnung (!) mit einem neuen Delphi solche Fehler? Naja, ich verzichte jetzt unter den Mühen der Beherrschung (ausnahmsweise) mal auf mein sonst obligatorisches Gemoser über diesen Produzenten und seine Produkte, konkreter deren Qualität, sondern beende mit noch einem nochmaligen Dank an Euch! |
AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1
Zitat:
Delphi-Quellcode:
(auch als
TAlphaColorRec.Blue
Delphi-Quellcode:
bekannt).
claBlue
Zitat:
Zitat:
|
AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1
Zitat:
|
AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1
Vielleicht darf ich zur Ehrenrettung des Delphis XE 10.1 noch ergänzen, daß das monierte Fehlverhalten mit einem 64-Bit-Compilat nicht auftritt.
|
AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1
Zitat:
VCL/FMX dürfen nicht gemischt werden; so steht es in der Doku. Alles andere ist at your own risk. Kann funktionieren, muss aber nicht. Kurzum: Delphi geht auch hier ehrenvoll aus der Runde raus ;) |
AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1
Ich mische in einem Projekt auch VCL und FMX. VCL für Fastreport und FMX um bequemer Grafiken zu basteln.
Ich habe weder unter 32bit noch unter 64bit Probleme. |
AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1
Zitat:
Darf man fragen, welches Format das originale (ersterzeugte) Formular hat? Bei mir ist es ein VCL-Formular, das FMX-Formular wird erst als zweites erzeugt. Alles scheint bestens. Der Fehler tritt erst dann auf, wenn das FMX-Formular irgendwann zur Laufzeit angezeigt wird, erst beim Beenden des Programmes und nur unter 32 Bit. Das schrieb ich oben alles schon, und dort ist auch der Quellcode des dysfunktionalen Beispielprojektes. Edit: Das ließ mir keine Ruhe, ich mußte es ausprobieren. Also, wenn man mit einem FMX-Projekt startet und diesem ein VCL-Formular hinzufügt und dieses während der Laufzeit sich anzeigen läßt, dann sind die Compilate 32 und 64 Bit ohne Beanstandung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 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