AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1

Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1

Ein Thema von Delphi-Laie · begonnen am 1. Nov 2016 · letzter Beitrag vom 4. Nov 2016
Antwort Antwort
Seite 1 von 2  1 2   
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1

  Alt 1. Nov 2016, 15:06
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
Angehängte Dateien
Dateityp: zip Programmabsturz-Fehler.zip (5,0 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
Daniel
(Administrator)

Registriert seit: 30. Mai 2002
Ort: Hamburg
15.480 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1

  Alt 1. Nov 2016, 17:22
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: https://parnassus.co/tfiremonkeycont...g-vcl-and-fmx/
Daniel R. Wolf
Admin Delphi-PRAXiS
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.207 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1

  Alt 1. Nov 2016, 18:57
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:

http://www.hydra4.com/hydra/

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).
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1

  Alt 1. Nov 2016, 22:54
Danke Euch beiden!

Vor kurzem sah ich auf youtube in einem Filmchen von einem Simon J.Stuart, daß man nur in der *.dproj-Datei eines VCL-Projektes in der Zeile "Frameworktype" "VCL" mit "FMX" zu ersetzen braucht, und schon kann man nach Belieben FMX-Formulare hinzufügen, was ja erstmal auch stimmt. Das war genau das, was ich suchte. Nur schlug der Detailteufel mal wieder zu. Es ist also leider doch nicht so simpel. Eigentlich wollte ich weder konvertieren (lassen) noch das VCL-Formular neu kreieren, es wird aber ohne wohl nicht möglich sein.

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!

Geändert von Delphi-Laie ( 2. Nov 2016 um 11:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.820 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1

  Alt 1. Nov 2016, 23:53
Richtig sind hingegen in der Delphi-Notation (nach meinen Experimenten mit dem Drawline-Befehl):
oder durch Blick in die Deklaration von TAlphaColorRec.Blue (auch als claBlue bekannt).

Warum entdecke ausgerechnet ich Amateur wiederholt (!) bei der ersten Begegnung (!) mit einem neuen Delphi solche Fehler?
Weil vermutlich niemand in die Hilfe schaut oder auf die Idee kommt Farben mit Hex-Konstanten anzugeben. Der Trick mit den vordefinierten Konstanten steht übrigens auch in der Hilfe:
Zitat:
Unter TAlphaColorRec finden Sie eine Liste der vordefinierten Farben.
Wieder mal ein schönes Beispiel, daß ausschließlich Code die Wahrheit spricht und man sich auf Dokumentation nicht verlassen kann. (Ist übrigens im DokWiki jetzt gefixt)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1

  Alt 2. Nov 2016, 11:15
Weil vermutlich niemand [...] auf die Idee kommt Farben mit Hex-Konstanten anzugeben.
Doch das kann schon vorkommen. Zum einen, um den in FMX neuen TAlphaColor-Farbraum zu erforschen (nun kenne ich seine Geheimnisse), zum anderen, weil sich mit den aneinandergereihten Fs Farbkomponenten schnell und bequem maximieren lassen.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1

  Alt 3. Nov 2016, 16:54
Vielleicht darf ich zur Ehrenrettung des Delphis XE 10.1 noch ergänzen, daß das monierte Fehlverhalten mit einem 64-Bit-Compilat nicht auftritt.
  Mit Zitat antworten Zitat
sahimba

Registriert seit: 14. Nov 2011
Ort: Berlin, Hauptstadt der DDR
136 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1

  Alt 3. Nov 2016, 18:16
Vielleicht darf ich zur Ehrenrettung
Einer Ehrenrettung bedarf es nicht.
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
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1

  Alt 4. Nov 2016, 14:11
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.
Philip
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#10

AW: Programmabsturz beim Beenden eines VCL-/FMX-Mischformularprogrammes unter XE 10.1

  Alt 4. Nov 2016, 15:44
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.
Du hast es gut.

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.

Geändert von Delphi-Laie ( 4. Nov 2016 um 18:15 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf