Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenmodul macht zicken (https://www.delphipraxis.net/194221-datenmodul-macht-zicken.html)

Delbor 30. Okt 2017 13:42

Datenbank: SQLite • Version: 3 • Zugriff über: FireDac

Datenmodul macht zicken
 
Hi zusammen
Ich bin dabei, meine Anwendung von MySQL auf SQLite umzustellen. Dazu hab ich mir ein neues Datenmodul angelegt. Nun musste ich feststellen, dass die Prozedur Create dieses Moduls gar nicht aufgerufen wird.
Erstmal schien alles klar: im Objektinspektor war unter Ereignisse=>OnCreate gar keine Prozedur angegebn. und so habe ich das nachgeholt.
Und nun geschieht folgendes:
  • Ich starte das Programm, das in der OnCreate der mainform bei einem Haltepunkt gleich wieder stoppt.
  • Ich steppe mit F8 weiter bis zum Createaufruf des Datenmoduls und gelange von da mit F7 erstmal in den Constructor des DML.
  • In der zeile "if not InitInheritedComponent(Self, TDataModule) then" ist fertig lustig, das Programm bricht mit der unten stehenden Fehlermeldung ab:
Zitat:

---------------------------
Im Projekt ContentMasterDXE8.exe ist eine Exception der Klasse EReadError mit der Meldung 'Ungültiger Eigenschaftswert' aufgetreten.
---------------------------
Da es nicht das erste mal ist, dass ich Probleme mit einem Datenmodul habe, habe ich erstmal das getan, was ich damls getan habe: ich habe ein neues Datenmodul angelegt.
Das Modul, das damals Probleme bereitete, hatte ich angelegt, indem ich ein bestehendes unter anderem Namen abspeicherte - das scheint bei Datenmodulen ein NoGo zu sein. Deshalb war meine erste Reaktion mal, sofort ein neues Datenmodul anzulegen.
Ob ich - wider besseres Wissen - das Modul so wie damals angelegt habe, weiss ich allerdings nicht mehr. Nur der Fehler scheint darauf hin zu deuten.

Nun kam ich auf die Idee, die dcu mal zu löschen. Andrerseits habe ich mir die dfm angesehen, und die führt nur die auf dem Modul vorhandenen Komponenten auf. Vorausgesetzt, die dcu ist lediglich die kompilierte dfm, wird das gar nichts bringen.

An was kann der Fehler liegen?

Gruss
Delbor

Sherlock 30. Okt 2017 13:54

AW: Datenmodul macht zicken
 
Wo wird denn dieses Datenmodul erzeugt? In der Projektdatei? Oder zur Laufzeit eines anderen Formulars?

Sherlock

Delbor 30. Okt 2017 14:02

AW: Datenmodul macht zicken
 
Hi Sherlock

Im OnCreate der Mainform.

Gruss
Delbor

jobo 30. Okt 2017 14:27

AW: Datenmodul macht zicken
 
Hab mit solchen Sachen schon lange nichts mehr gemacht.

Die bloßen Komponenten haben sich sicher nicht geändert, aber ein DFM ist ja nichts anderes als eine Textliste mit Klassen bzw ObjektInstanzen und zugehörigen Attributen.
Jenachdem wie man damit umgeht (copy, Text editieren..), stehen am Ende ein paar zuviel Attribute da drin, besonders gern wenn man irgendwo einen Typ ändert, der andere Attribute besitzt (mysql > sqlite).

Also mal das Modul auskoppeln (Unit aus uses entfernen), voll durchkompilieren (so weit es geht), Modul einbinden, ein (harmloses) Attribut ändern, voll durchkompilieren, Attribut korrigieren, wieder vollständig kompilieren. Könnte dann besser aussehen.
Das Entfernen oder umbenennen der DCU zwingt den Compiler natürlich auch, neu zu kompilieren (zumindest das fehlende Modul)

Delbor 30. Okt 2017 15:27

AW: Datenmodul macht zicken
 
Hi jobo

Ich hab das also mal ausgekoppelt - kompiliert hervorragend.Sogar einer meiner kleinen Tests tat, was er sollte. Nicht ganz klar war mir, ob Fileexists auch auf Ordner reagiert. Ein Showmessage sagt ja...

Da die gepostete Zeile aus System.pas stammt, war ich sehr zurüchaltend mit dem widergeben dieser Zeilen und postete gerade mal die eine. Das war offensichtlich falsch. Denn das ganze Schnipsel lautet:
Delphi-Quellcode:
    if (ClassType <> TDataModule) and not (csDesigning in ComponentState) then
    begin
      if not InitInheritedComponent(Self, TDataModule) then
Was nichts anderes heisst, als dass mein Datenmodul gar keines ist, obwohl es optisch und im OI als genau ein solches daherkommt.

Da bleibt mir offensichtlich nur übrig, das Ding neu zu erstellen.

Gruss
Delbor

p80286 30. Okt 2017 15:50

AW: Datenmodul macht zicken
 
Zitat:

Zitat von Delbor (Beitrag 1384583)
Da bleibt mir offensichtlich nur übrig, das Ding neu zu erstellen.

Da würde ich immer zu raten.
Aus unerfindlichen Gründen kann man ein DatenModul nicht so einfach modifizieren. Ich hab auch schon mal einen halben Tag damit verbracht, eine klitzekleine Modifikation unter zu bringen.
Seitdem mach ich es grundsätzlich immer neu wenn sich an den Komponenten etwas ändert. Da ich die meisten Sourcen eh mit c&p durch die Gegend schieben kann hält der Aufwand sich in Grenzen.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz