AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TDataModule cannot be found...

Ein Thema von BigAl · begonnen am 28. Dez 2023 · letzter Beitrag vom 28. Dez 2023
Antwort Antwort
Seite 1 von 2  1 2      
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
495 Beiträge
 
Delphi 12 Athens
 
#1

TDataModule cannot be found...

  Alt 28. Dez 2023, 10:08
Hallo zusammen,

ich nutze in meinem aktuellen Delphi 12 Projekt ein zentrales Datenmodul (TDataModule). Darin sind die zentrale Verbindung zu einer Datenbank sowie einige Queries definiert. Weiterhin ist dort eine zentrale Image-Liste (TVirtualImageList) definiert.

Solange ich das Datenmodul in der aktuellen Sitzung einmal geöffnet hatte funktioniert alles. Ist aber nach dem Laden des Projekts (z.B. nach Start der IDE) das Datenmodul nicht geöffnet erhalte ich Fehler. In den Formularen die das Datenmodul benutzen sind alle Bezüge undefiniert. Beim Kompilieren erhalte ich z.B. den folgenden Fehler:

2023-12-28-11_05_32-error.png

Ich meine (bin mir aber nicht sicher), dass das erste seite heute so ist. Woran kann das liegen? Habe ich da irgendwo was verstellt?

Wäre ja doof, wenn immer alle abhängigen Module explizit in der IDE geöffnet sein müssen...
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#2

AW: TDataModule cannot be found...

  Alt 28. Dez 2023, 10:35
Nja, entweder du öffnest dessen Unit
und was sonst auch noch gut funktioniert, wenn man das Datenmodul in ein Designtimepackage packt und dort lädt (Create).

"erstellte" Datenmodule und Forms registrieren sich eigentlich automatisch global, so dass eine Namensauflösung "eigentlich" gut funktioniert,
und ansonsten muß das Datenmodul irgendwie bekannt sein, also manuell erstellt, oder im Designer geladen, oder z.B. über die Objektablage oder die Projektverwaltung gefunden und womöglich automatisch instanziiert (was nicht immer gut geht).

Aber wenn man es dennoch manuell machen will (z.B. auch damit immer die richtige globale Instanz genommen wird und z.B. nicht die Forum im Form-Designer, falls die Unit grade geöffnet ist), dann
Delphi-Quellcode:
// ODER class function TMyHelperClassOrDataModul.FindGlobalModules(const Name: string): TComponent; static;
function FindGlobalModules(const Name: string): TComponent;
begin
  Result := nil;
  if SameText(Name, 'DM1') then
    Result := DM1; // die globale Instanz
  ...
Dann im Register des Packages ein Delphi-Referenz durchsuchenRegisterFindGlobalComponentProc(FindGlobalModules);
und im Finalization natürlich nicht das Delphi-Referenz durchsuchenUnregisterFindGlobalComponentProc vergessen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (28. Dez 2023 um 10:41 Uhr)
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TDataModule cannot be found...

  Alt 28. Dez 2023, 11:00
Hallo zusammen,

ich nutze in meinem aktuellen Delphi 12 Projekt ein zentrales Datenmodul (TDataModule). Darin sind die zentrale Verbindung zu einer Datenbank sowie einige Queries definiert. Weiterhin ist dort eine zentrale Image-Liste (TVirtualImageList) definiert.

Solange ich das Datenmodul in der aktuellen Sitzung einmal geöffnet hatte funktioniert alles. Ist aber nach dem Laden des Projekts (z.B. nach Start der IDE) das Datenmodul nicht geöffnet erhalte ich Fehler. In den Formularen die das Datenmodul benutzen sind alle Bezüge undefiniert. Beim Kompilieren erhalte ich z.B. den folgenden Fehler:

Ich meine (bin mir aber nicht sicher), dass das erste seite heute so ist. Woran kann das liegen? Habe ich da irgendwo was verstellt?

Wäre ja doof, wenn immer alle abhängigen Module explizit in der IDE geöffnet sein müssen...
Stell sicher dass in der Liste der autocreate-Objekte das DM vor dem ersten Form aufgelistet wird das es benötigt und auch das Du nicht versehendlich die Name-property des DMs gelöscht hast.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#4

AW: TDataModule cannot be found...

  Alt 28. Dez 2023, 11:06
Stell sicher dass in der Liste der autocreate-Objekte das DM vor dem ersten Form aufgelistet wird das es benötigt
Das sollte aber nur die Runtime betreffen, wenn das Programm gestartet wird,
aber wohl nicht, dass es auch im Designer der Delphi-IDE passt.

und auch das Du nicht versehendlich die Name-property des DMs gelöscht hast.
Das geht nicht. Es muß immer einen Namen geben, bei einem Leerstring oder einem ungültigen Bezeichner, kommt eine Exception vom Designer/PropertyEditor.
Aber ja, ein anderer/falscher Name, ging schon, womit es dann auch nicht mehr gefunden würde.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (28. Dez 2023 um 11:09 Uhr)
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
495 Beiträge
 
Delphi 12 Athens
 
#5

AW: TDataModule cannot be found...

  Alt 28. Dez 2023, 11:06
Stell sicher dass in der Liste der autocreate-Objekte das DM vor dem ersten Form aufgelistet wird das es benötigt und auch das Du nicht versehendlich die Name-property des DMs gelöscht hast.
In "Auto-create forms" habe ich nur das Datenmodul und das Hauptformular. Und ja das Datenmodul steht oben. Alles andere wird dynamisch erzeugt.

Was meinst Du mit "versehendlich die Name-property des DMs gelöscht"?
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#6

AW: TDataModule cannot be found...

  Alt 28. Dez 2023, 11:11
Passiert gern mal ... ausversehn einen Buchstaben gedrückt, während der Designer den Eingabefokus im Name-Property liegen hatte.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
495 Beiträge
 
Delphi 12 Athens
 
#7

AW: TDataModule cannot be found...

  Alt 28. Dez 2023, 11:50
Passiert gern mal ... ausversehn einen Buchstaben gedrückt, während der Designer den Eingabefokus im Name-Property liegen hatte.
Dann wäre aber der Bezug - zumindest in allen nicht geöffneten Forumularen - sofort komplett ungültig...
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.350 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TDataModule cannot be found...

  Alt 28. Dez 2023, 12:04
Leider habe ich solche Probleme auch sporadisch. Ich kann diese aber nicht zuverlässig reproduzieren, so dass ich sie auch nicht melden kann. Dabei habe ich Fehler dieser Art sowohl mit geöffnetem Datenmodul als auch ohne dass es geöffnet wurde.

Wenn es bei dir zuverlässig funktioniert, wenn das Datenmodul offen ist, würde ich die raten, die Speicherung des Projektdesktops in den Projektoptionen zu aktivieren und es dabei zu belassen.

Wenn du es auch reproduzieren kannst, wenn du den kompletten (nicht veröffentlichbaren) Inhalt entfernst, wäre es natürlich super, weil du es dann zum Testen hier anhängen könntest. Wenn das auch andere reproduzieren können, sollte ein entsprechender Quality-Eintrag gut zu lösen sein und vielleicht dann auch die sporadischen Probleme bei anderen lösen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.338 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: TDataModule cannot be found...

  Alt 28. Dez 2023, 13:04
Ich meine vor längerem gelesen zu haben, dass es ähnliche Probleme gibt, wenn man in einer Projektgruppe "zentrale" Module gemeinsam nutzt. Das Problem hatte irgendwas damit zu tun, dass die Ablage-Verzeichnisse der entsprechenden Units nicht richtig aufgelöst werden konnten.
Aber das ist aus der Erinnerung und ich kann keine Quelle dazu angeben. Ich kann daher damit auch völlig falsch liegen.
Peter
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
495 Beiträge
 
Delphi 12 Athens
 
#10

AW: TDataModule cannot be found...

  Alt 28. Dez 2023, 13:08
Ich meine vor längerem gelesen zu haben, dass es ähnliche Probleme gibt, wenn man in einer Projektgruppe "zentrale" Module gemeinsam nutzt. Das Problem hatte irgendwas damit zu tun, dass die Ablage-Verzeichnisse der entsprechenden Units nicht richtig aufgelöst werden konnten.
Aber das ist aus der Erinnerung und ich kann keine Quelle dazu angeben. Ich kann daher damit auch völlig falsch liegen.
Genau so ist es (eben getestet). Wenn ich das einzelne Projekt öffne geht alles wunderbar wie es soll. Sobald ich das Projekt als Teile einer Gruppe öffne kommt der Fehler...

Danke für den Tip!
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:23 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