Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Was passiert vor "DataModuleCreate" (https://www.delphipraxis.net/56737-passiert-vor-datamodulecreate.html)

KaiO 10. Nov 2005 11:02


Was passiert vor "DataModuleCreate"
 
Hallo,
meine Apps sind folgendermaßen aufgebaut:
Ich öffne eine MDI-Mainform, dann ein Datenmodul:

Projekt - Quelltext:
Delphi-Quellcode:
begin
  Application.Initialize;
  Application.Title := 'MID 7 for DAK';
  Application.CreateForm(TMainForm, MainForm);
  Application.CreateForm(TDMMID, DMMID);
  Application.CreateForm(TPasswordDlg, PasswordDlg);
  Application.Run;
end.
Der Code von MainForm.FormCreate wird bis zu Ende korrekt durchlaufen.

Ich nehme an, das jetzt DMMID.DataModuleCreate ausgeführt wird, allerdings komme ich dort nicht mehr an. Ich erhalte eine Windows Fehlermeldung "MID.exe hat einen Fehler verursacht und muß beendet werden" und Schluß ist.

Der Fehler tritt auf meinem Entwicklungsrechner (Win XP Prof. SP1) und 12 anderen Rechnern mit XP und Win2000 nicht auf, nur auf einer Charge von neuen Rechnern (Win XP Prof. SP1).

Die Frage ist für mich, was passiert vor DataModuleCreate ?

Die uses Clauses des Daten moduls sieht folgendermaßen aus:
Delphi-Quellcode:
uses
  SysUtils, Classes, DB, ADODB, wwfltdlg, wwDialog, Wwlocate, Dialogs,Controls,
  BetterADODataSet,Graphics;
.
.
.
.

implementation

uses Address, Main, MSSQLLibary;
Ich habe diese Anordnung auch schon in einem neuen Projekt nach gestellt und da funktioniert es auch auf den neuen Rechnern.

Hat jemand eine Idee?

Danke im Voraus und Grüße von Kai

shmia 10. Nov 2005 12:12

Re: Was passiert vor "DataModuleCreate"
 
Zitat:

Zitat von KaiO
Die Frage ist für mich, was passiert vor DataModuleCreate ?

Der Konstruktor für jede Komponente auf dem Datenmodul wird aufgerufen.
Es muss eine Komponente dabei sein, die zu einem Ausnahmefehler führt.

Fehlersuche:
Also ein neues leeres Datenmodul erzeugen, dass vor deinem Problemfall erzeugt wird.
Dann eine Komponente nach der anderen auf das neue Datenmodul kopieren und prüfen, ob's knallt.

marabu 10. Nov 2005 12:17

Re: Was passiert vor "DataModuleCreate"
 
Herzlich willkommen in der Delphi-PRAXiS, Kai.

Wenn du dafür sorgst, dass dein Datenmodul weitgehend von den anderen Modulen entkoppelt ist, dann kannst du das Datenmodul ruhig vor dem MainForm erzeugen. Ich mache das grundsätzlich, da es sich ja um eine Anwendungs-Resource handelt. Noch davor frage ich Login-Informationen ab, wenn ich sie brauche.

Schau doch mal in dein Datenmodul, ob du vielleicht in der initialization section Code hast, der da besser nicht wäre. Der Ausführungszeitpunkt für diese section wird durch die Reihenfolge der Units in den Uses-Abschnitten bestimmt, nicht über die Reihenfolge von CreateForm(). Ich habe zur Kenntnis genommen, dass du den Fehler nicht auf jeder Maschine produzierst, aber dazu direkt fällt mir nun nichts ein.

Freundliche Grüße vom marabu

sakura 10. Nov 2005 16:04

Re: Was passiert vor "DataModuleCreate"
 
@ KaiO : Editiere doch bitte Deinen ersten Beitrag und setze die [delphi] - Tags um Deinen Quellcode, damit dieser schöner dargestellt wird :)

...:cat:...

Hansa 10. Nov 2005 17:15

Re: Was passiert vor "DataModuleCreate"
 
Hi,

poste mal besser die uses Liste der MainForm. Könnte fast wetten, daß darin ein Datenbank-Zugriff erfolgen soll. Da steht bestimmt mit drin Uses ...DB, ADODB,.. in der Richtung was.

Zitat:

Der Code von MainForm.FormCreate wird bis zu Ende korrekt durchlaufen
Würde eher sagen, daß dann die erste Möglichkeit besteht, anzuzeigen, daß überhaupt ein Fehler passiert ist. Was sind das für Komponenten ? Hat Delphi überhaupt die Möglichkeiten die Fehlerstelle sourcemäßig zu lokalisiere ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 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