Einzelnen Beitrag anzeigen

einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#5

AW: Delphi XE2: Fehler beim Ableiten eines Formulars

  Alt 11. Jan 2012, 21:06
Hallo,

ha, ich habe es und weiß auch was passiert und wie man es verhindern kann. Aber der Reihe nach.

Eigentlich egal wie man das vererbt.
Nein. Es geht schon um den Schritt der Formularvererbung und nicht um Klassenvererbung. Der Unterschied ist der das bei der Formularvererbung nicht nur die Formularklasse vererbt wird, sondern auch die Formulardatei (DFM). Der Fehler tritt auch nicht zur Laufzeit auf, sondern in der Entwicklungsumgebung.

Das folgende bezieht sich nur auf VCL-Projekte. Bei FireMonkey habe ich das jetzt nicht getestet.

Nun erst mal die Pflicht, wie man das verhindern kann:
Das ist ein sch... Bug. Wenn man ein Formular auf die falsche Art und Weise vererbt, geht sogar mit Pauken und Trompeten die Entwicklungsumgebung zu.

Oder doch ein Feature. Man soll sich das Formular nur anschauen, bevor man es vererbt.

Also das Formular, von dem man erben will, öffnen und in die Formularansicht wechseln. Dann darf man über Datei -> Neu -> Weitere... -> Delphi-Projekte -> Vererbbare Elemente dieses Formular auch vererben. Getestet habe ich das jetzt mit neuem Projekt und neue angelegten Formularen (leer wie auch mit Standartkomponenten drauf, gespeicherte und nicht gespeichert).

Nun die Kür, für die die wissen wollen wie man es reproduziert und was scheinbar passiert:
Folgender Ablauf bringt bei mir die Entwicklungsumgebung nach dem Fehler nicht gleich zum Absturz. Ich habe nur Delphi, Version 16.0.4358.45540 Update 3 und aktuell keine weiteren Packages installiert, außer die mitgelieferten. Alles unter Win7 64bit. Delphi muss so konfiguriert sein, dass die mit gelieferten Sourcen beim "Deklaration suchen" mit unter geöffnet werden.

1. Delphi neu starten
2. Datei -> Neu -> VCL-Formularanwendung - Delphi
3. Datei -> Alles speichern (Verzeichnis und Dateiname wählen und speichern)
4. [Shift]+[F9] und Ok
5. [F12] (In die Code-Ansicht wechseln)
6. [Strg]+Klick auf das Dialogs hinten in der Uses-Liste (Die Datei VCL.Dialog.pas muss sich öffnen.)
7. Formulardatei wieder über den Reiter aktivieren aber nicht in die Formularansicht wechseln
8. Datei -> Neu -> Weitere... -> Delphi-Projekte -> Vererbbare Elemente, Form1 auswählen und Ok.
9. Nun gibt es eine Fehlermeldung formularvererbung-fehler-1.jpg Weiter mit Abbrechen
10. Nun erschein eine Fehlermeldung mit dem Text:
Code:
[Window Title]
Fehler

[Content]
Fehler beim Erzeugen von Formular: Zugriffsverletzung bei Adresse 503359F4 in Modul 'vcl160.bpl'. Lesen von Adresse 0000000A.

[OK]
(Ist ja der bekannte Folgefehler von dem vorherigen)

11. Jetzt kommt eine Warnung mit dem Text:
Code:
[Window Title]
Warnung

[Content]
Die Unit "Unit2.pas" ist mit dem von diesem Projekt verwendeten Framework VCL nicht kompatibel.

Das Hinzufügen könnte zu Compiler-Fehlern oder unerwartetem Verhalten führen. Fortsetzen?

[Ja] [Nein]
Weiter mit Ja, wir wollen doch sehen was er da treibt.

Dann erscheint das: formularvererbung-fehler-4.jpg Das ist doch eine VCL-Anwendung, wie kommt er jetzt auf FireMonkey. So viele Wände kann man gar nicht Bauen wie da kaputt gehen. Schön den Schädel im Rigips versenkt.

Einbeliebigername.
  Mit Zitat antworten Zitat