![]() |
Delphi XE2: Fehler beim Ableiten eines Formulars
Hallo zusammen,
ich bekomme in Delphi XE2, Update 3 immer einen Fehler, wenn ich ein neues Formular von einem anderen ableiten möchte. Der Fehler lautet: "Fehler beim Lesen von Root.BorderStyle: Zugriffsverletzung bei Adresse 00000... " Ich kann dies auf zwei unterschiedlichen PC´s nachvollziehen. Das Projekt wurde kürzlich von Delphi 2009 migriert. Ich konnte im Internet schon was finden, aber eine wirkliche Lösung habe ich nicht gefunden: ![]() Das manuelle Ableiten eines Formulars ist doch relativ mühsam... :wall: Viele Grüße, Andreas |
AW: Delphi XE2: Fehler beim Ableiten eines Formulars
Kann ich nicht nachvollziehen.
Lad doch mal ein Beispiel hoch. Das hier funktioniert:
Delphi-Quellcode:
type
TForm1 = class(TForm) Label1: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); end; TF2 = class(TForm1) end; var Form1: TForm1; F2: TF2; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin if F2 = nil then begin F2:= TF2.Create(self); F2.ShowModal; FreeAndNil(F2); end; end; |
AW: Delphi XE2: Fehler beim Ableiten eines Formulars
Hallo,
Zitat:
Zitat:
Einbeliebigername. |
AW: Delphi XE2: Fehler beim Ableiten eines Formulars
Eigentlich egal wie man das vererbt.
Kann man denn das zu vererbende Formular ohne Probleme öffnen? Da müsste sich ne kaputte dfm doch schon bemerkbar machen. Evtl mal auf Textansicht und zurück schalten. |
AW: Delphi XE2: Fehler beim Ableiten eines Formulars
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ha, ich habe es und weiß auch was passiert und wie man es verhindern kann. Aber der Reihe nach. Zitat:
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. :evil: Oder doch ein Feature. Man soll sich das Formular nur anschauen, bevor man es vererbt. :thumb: 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 Anhang 36042 Weiter mit Abbrechen 10. Nun erschein eine Fehlermeldung mit dem Text:
Code:
(Ist ja der bekannte Folgefehler von dem vorherigen)
[Window Title]
Fehler [Content] Fehler beim Erzeugen von Formular: Zugriffsverletzung bei Adresse 503359F4 in Modul 'vcl160.bpl'. Lesen von Adresse 0000000A. [OK] 11. Jetzt kommt eine Warnung mit dem Text:
Code:
:gruebel: Weiter mit Ja, wir wollen doch sehen was er da treibt.
[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] Dann erscheint das: Anhang 36043 :wall: :wall: :wall: Das ist doch eine VCL-Anwendung, wie kommt er jetzt auf FireMonkey. :gruebel: So viele Wände kann man gar nicht Bauen wie da kaputt gehen. Schön den Schädel im Rigips versenkt. Einbeliebigername. |
AW: Delphi XE2: Fehler beim Ableiten eines Formulars
Ich kann den Fehler mit diesen Schritten nachvollziehen und füge diese zu folgendem Eintrag hinzu:
Report No: 99432 (RAID: 287932) Status: Open Inheritable Items in VCL ![]() |
AW: Delphi XE2: Fehler beim Ableiten eines Formulars
Bei FMX der gleiche Bug, d.h. Deplpi stürzt ohne Fehlermeldung sofort ab.
|
AW: Delphi XE2: Fehler beim Ableiten eines Formulars
Hallo zusammen,
vielen Dank für eure Antworten. Entsprechend der Beschreibung von einbeliebigername kann ich den Fehler auch immer nachvollziehen - wie auch schon manchmal in meinem von D2009 migrierten Projekt. Nachdem ich ein paar Tests in meinem Projekt gemacht habe, konnte ich feststellen, dass die Formularableitung (immer) funktioniert wenn ich irgendein Formular gerade "anschaue". Muss gar nicht das sein, von welchem ich ableiten möchte. Das erklärt auch das beobachtete Verhalten, dass es manchmal funktioniert hat und manchmal nicht... Vielleicht handelt es sich hierbei doch um ein Feature. :-) Viele Grüße, Andreas |
AW: Delphi XE2: Fehler beim Ableiten eines Formulars
Hallo,
Zitat:
Aber es komplettiert den Sachverhalt. Es sieht wohl danach aus, als ob beim Vererben zur Feststellung ob FireMonkey oder VCL, das aktuell in der Anzeige befindliche Formular benutzt wird. Wie Delphi jetzt ohne angezeigtes Formular zu dieser falschen Feststellung kommt und warum nicht generell in das Formular, von dem man Erben will, geschaut wird, weiß aber nur der Dichter. Einbeliebigername. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:35 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