Hintergrund:
D7 und
Jedi Debug (aus "JVCL345CompleteJCL231-Build4197") - Windows als Ziel
OS
Datenbankanbindung (via SqlExpr an Firebird
DB)
Ich suche nun schon geraume Zeit nach einem Problem - folgender Rahmen:
wir haben hier eine Anwendung im Bereich Fertigungssteuerung/Planung. Sie ist in mehrere Applikationen aufteilt. Es gibt eine Exe als
GUI für den Werkstattbereich und eine zweite Exe für die Arbeitsvorbereitung und Stammdatenpflege (
AV). Naturgemäß sind viel Units in beiden Anwendungen eingebunden. Das war bisher kein Problem.
Seit einer Woche (nach irgendeiner Änderung von mir, die ich nicht erkenne/finde) habe ich nun das Problem, das beim Start des Werkstattmoduls zuallererst das Hauptformular des
AV-Modul initialisiert wird.
Die
DPR des Werkstattmodul sieht so aus:
Delphi-Quellcode:
program RMWerk;
{%File '..\Tools\FastMM\FastMM4Options.inc'}
uses
FastMM4
in '
..\Tools\FastMM\FastMM4.pas',
FastMM4Messages
in '
..\Tools\FastMM\FastMM4Messages.pas',
RtlVclOptimize
in '
..\Tools\RtlVclOptimize\RtlVclOptimize.pas',
MidasSpeedFix
in '
..\Tools\MidasSpeedFix\MidasSpeedFix.pas',
Forms,
uMainWerk
in '
uMainWerk.pas'
{frmMainWerk},
dlg_LAGAusw
in '
dlg_LAGAusw.pas'
{frmWahlLAG},
Dlg_LogFile
in '
Dlg_LogFile.pas'
{frmDlgLogFile},
Dlg_StartBuchung
in '
Dlg_StartBuchung.pas'
{frmDlgStartBuchung},
Dlg_StopBuchung
in '
Dlg_StopBuchung.pas'
{frmDlgStopBuchung},
dm_Buchung
in '
dm_Buchung.pas'
{dmBuchung: TDataModule},
dm_Werk
in '
dm_Werk.pas'
{dmWerk: TDataModule},
uWerkGlob
in '
uWerkGlob.pas',
Dm_Connection
in '
..\Prog\Dm_Connection.pas'
{DmConnection: TDataModule},
RMGlobFunc
in '
..\Tools\RMGlobFunc.pas',
uRMIni
in '
..\Prog\uRMIni.pas',
RMGlob
in '
..\Tools\RMGlob.pas',
Dm_GlobData
in '
..\Prog\Dm_GlobData.pas'
{DmGlobData: TDataModule},
ufrmUrRM
in '
..\Prog\ufrmUrRM.pas'
{frmUrRM},
RMErrorTool
in '
..\Tools\RMErrorTool.pas',
uRM_JEDI_ExceptionDialog
in '
..\Prog\uRM_JEDI_ExceptionDialog.pas'
{ExceptionDialog},
ufrmRMPasBugReport
in '
..\Prog\ufrmRMPasBugReport.pas'
{frmRMPasBugReport},
uRMMeldungsDialog
in '
..\Tools\uRMMeldungsDialog.pas'
{RMMeldungsDialog},
ufrmRMPKzuFAPAGZuordnung
in '
..\Prog\ufrmRMPKzuFAPAGZuordnung.pas'
{frmRMPKzuFAPAGZuordnung},
RMFormTool
in '
..\Tools\RMFormTool.pas'
{dmRMFormTool: TDataModule},
RMContainer
in '
..\Prog\RMContainer.pas',
uallProcess
in '
..\Tools\uallTools\uallProcess.pas',
uallDisasm
in '
..\Tools\uallTools\uallDisasm.pas',
uallDisasmEx
in '
..\Tools\uallTools\uallDisasmEx.pas',
uallHook
in '
..\Tools\uallTools\uallHook.pas',
uallKernel
in '
..\Tools\uallTools\uallKernel.pas',
uallProtect
in '
..\Tools\uallTools\uallProtect.pas',
uallTableHook
in '
..\Tools\uallTools\uallTableHook.pas',
uallUtil
in '
..\Tools\uallTools\uallUtil.pas',
Dm_dokumente
in '
..\Tools\Dm_dokumente.pas'
{dmDokumente: TDataModule},
RMPAS_FastMMUsageTracker
in '
..\Tools\FastMM\RMPAS_FastMMUsageTracker.pas'
{fFastMMUsageTracker},
ufrmRMInfoPPBaumVergleich
in '
..\Prog\ufrmRMInfoPPBaumVergleich.pas'
{frmRMInfoPPBaumVergleich},
RTTIUnit
in '
..\Tools\RTTI\RTTIUnit.pas',
Dm_RMTV_Menu
in '
..\Prog\Dm_RMTV_Menu.pas'
{DMTV_Menu: TDataModule},
dm_AutoLogin
in '
..\Tools\dm_AutoLogin.pas'
{dmAutoLogin: TDataModule},
DM_GefaehrdungsVerwaltung
in '
..\Prog\DM_GefaehrdungsVerwaltung.pas'
{DMGefaehrdungsVerwaltung: TDataModule},
Dm_RMSB_Menu
in '
..\Prog\Dm_RMSB_Menu.pas'
{DMRMSB_Menu: TDataModule},
ufrmRMStammGefAVPlazet
in '
..\Prog\ufrmRMStammGefAVPlazet.pas'
{frmRMStammGefAVPlazet},
VCLFixes
in '
..\Tools\VCLFixes.pas';
{$R *.res}
{$R ..\Tools\WindowsXP.RES}
begin
Application.Initialize;
Application.Title := '
PASwerk';
Application.CreateForm(TfrmMainWerk, frmMainWerk);
Application.Run;
end.
Nun wird jedoch vor bzw. bei Application.Initialize das initialization der
Unit uMain (das ist das Hauptformular des
AV-Moduls) aufgerufen. Das sieht so aus:
Delphi-Quellcode:
initialization
if not JclHookExceptions
then
MessageDlg('
Fehler beim Initialisieren der Exception-Behandlung', mtError, [mbOK], 0);
// Enable raw mode (default mode uses stack frames which aren't always generated by the compiler)
Include(JclStackTrackingOptions, stRawMode);
// Disable stack tracking in dynamically loaded modules (it makes stack tracking code a bit faster)
Include(JclStackTrackingOptions, stStaticModuleList);
Include(JclStackTrackingOptions, stTraceAllExceptions);
// Initialize Exception tracking
if (
not JclStartExceptionTracking)
then
MessageDlg('
Fehler beim Instanzieren des Exception-Tracking (Fehlerverfolgung)!', mtWarning, [mbOK], 0);;
OleInitialize(
nil);
Der Aufruf von
JclStartExceptionTracking
liefert ein "False" - klar, es ist ja auch das Werkstattmodul gestartet.
Meine Frage nun:
kann mir jemand einen Tipp geben, WARUM das inizialization der
Unit uMain (
AV-Modul) überhaupt bei Application.Initialize im Werkstatt-Modul aufgerufen wird? Nach meinem Verständnis dürfte dies gar nicht aufgerufen werden.
Die
Unit uMain ist NICHT im uses - es existiert lediglich eine indirekte Abhängigkeit, die bisher nie zum o.g. Problem führt.
Ich hoffe, meine verwirrten Gedanken haben eine einirgmaßen verständliche Situationsbeschreibung erlaubt ..