AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Vererbung zwischen TDataModules wird ständig gelöst?
Thema durchsuchen
Ansicht
Themen-Optionen

Vererbung zwischen TDataModules wird ständig gelöst?

Ein Thema von Angel4585 · begonnen am 25. Nov 2013 · letzter Beitrag vom 3. Dez 2013
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Vererbung zwischen TDataModules wird ständig gelöst?

  Alt 25. Nov 2013, 09:29
Delphi-Version: 2010
Guten Tag!

Ich habe von einem eigene TDataModule zwei weitere abgeleitet:

Delphi-Quellcode:
TdmSchnittstelle = class(TDataModule)
TdmVariante1 = class(TdmSchnittstelle)
TdmVariante2 = class(TdmSchnittstelle)
Das ganze habe ich über die IDE gemacht, also nicht selbst Units angelegt und angefangen abzuleiten.
Nun hat jede der beiden Varianten ein eigenes Formular, auf dem die Komponenten zu sehen sind. Ist auch OK soweit.
Die Formulare fangen im Code folgendermaßen an:

Delphi-Quellcode:
inherited dmVariante1: TdmVariante1
inherited dmVariante2: TdmVariante2
Jetzt ist es aber so, das öfters (von der IDE) die Vererbung "gelöst" wird.
Jedenfalls die der Formulare, da steht dann plötzlich nurnoch:

Delphi-Quellcode:
object dmVariante1: TdmVariante1
object dmVariante2: TdmVariante2
Beim compilieren klappt das noch alles, aber beim Programmstart kommen dann beim Instanziieren folgende Fehlermeldungen:
Code:
Exception EReadError in Modul MyProgram.exe bei 000ZYX.
Fehler beim Lesen von dmVariante1.ClientHeight: Eigenschaft ClientHeight existiert nicht.

Exception EReadError in Modul MyProgram.exe bei 000XYZ.
Fehler beim Lesen von dmVariante2.ClientHeight: Eigenschaft ClientHeight existiert nicht.
Das Ganze passiert dann, wenn ich z.B. bei Variante1 die Größe des Formulars/Datenmoduls ändere.

Lösen kann ich das nur, indem ich mir das Formular als Text anzeigen lass und händisch object zu inherited ändere.
Dann kommt noch die Meldung:
Code:
Fehler beim Lesen von dmVariante1.ClientHeight: Eigenschaft ClientHeight existiert nicht. Den Fehler ignorieren und fortsetzen?
Das gleiche für ClientWidth und Variante2.
Wenn ich das Ignoriere geht alles wieder wunderbar, bis zum nächsten Vorfall.

Was für ein Problem hat die IDE (oder ich?) hier?
Kann ich in der IDE irgendwo was einstellen damit sowas nichtmehr passiert?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#2

AW: Vererbung zwischen TDataModules wird ständig gelöst?

  Alt 25. Nov 2013, 12:59
Da bist du nicht der einzige: http://stackoverflow.com/questions/5...le-inheritance
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Vererbung zwischen TDataModules wird ständig gelöst?

  Alt 25. Nov 2013, 14:30
Danke! Ich bin durch deinen Link auf folgende Seite gestoßen, wo das Phänomen auch etwas erklärt wird: http://wiert.me/2009/08/20/delphi-ti...-the-designer/
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#4

AW: Vererbung zwischen TDataModules wird ständig gelöst?

  Alt 25. Nov 2013, 15:50
Danke! Ich bin durch deinen Link auf folgende Seite gestoßen, wo das Phänomen auch etwas erklärt wird: http://wiert.me/2009/08/20/delphi-ti...-the-designer/
Das war die Idee...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
jeroenp

Registriert seit: 5. Aug 2010
7 Beiträge
 
Delphi 2 Desktop
 
#5

AW: Vererbung zwischen TDataModules wird ständig gelöst?

  Alt 26. Nov 2013, 09:12
Dear Angel4585 .

Sorry for writing in English, but my way of "rechtschreiben" probably would make it worse (:

I've not seen this behaviour of datamodules becoming corrutp automagically happen from within the IDE, but there must be a bug somewhere.

I'd appreciate if you can find out steps, and post them (including the affected Delphi version) as a comment to my blog post: http://wiert.me/2009/08/20/delphi-ti...-the-designer/

--jeroen
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Vererbung zwischen TDataModules wird ständig gelöst?

  Alt 3. Dez 2013, 08:41
Ich habe das jetzt eine Weile getestet mit folgendem Ergebnis:

-> Kind speichern ohne Veränderung + IDE schliessen und wieder öffnen = Vererbung besteht weiterhin
-> Anwendung compiliert ohne Veränderung = Vererbung wird gelöst + Height und Width wird hinzugefügt
-> Kind gespeichert mit Veränderung der Formulargröße + IDE schliessen und wieder öffnen = Vererbung besteht weiterhin + Height und Width wird hinzugefügt
-> Anwendung compiliert mit Veränderung der Formulargröße = Vererbung wird gelöst + Height, Width, ClientHeight, uvm. wird hinzugefügt

Mit "Vererbung besteht weiterhin" meine ich, dass bei der Ansicht des Formulars als Text als erstes immernoch "inherited" steht anstatt "object".
"Vererbung gelöst" entsprechend umgekehrt.

Beim compilieren wird also irgendwo eine Aktion durchgeführt die das Formular verändert, denn speichern alleine bewirkt das nicht.

Edit:
Zusätzlich gibt es ein problem beim tauschen des "object" gegen das "inherited" im Text-Modus.
Wenn man nich in den Designer-Modus wechselt und die ganzen Meldungen ignoriert, kommen die Meldungen zur Laufzeit wodurch das Programm (in meinem Fall) abstürzt.
Martin Weber
Ich bin ein Rüsselmops

Geändert von Angel4585 ( 3. Dez 2013 um 08:50 Uhr)
  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 07:41 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 by Thomas Breitkreuz