Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit dem Datenmodul (https://www.delphipraxis.net/49010-problem-mit-dem-datenmodul.html)

alfred 4. Jul 2005 11:01


Problem mit dem Datenmodul
 
Hallo Leute, :witch:

ich habe hier ein kurioses Problem. Folgende Konstruktion liegt vor : in einer Exe ist ein Datenmodul implementiert. Von einer DLL aus soll auf dieses DM zugegriffen werden. ( In der DLL liegen Druckaufbereitungsprogramme, Rave - Formulare und ähnliche, kundenspezifische Sachen, die beim Update nicht überschrieben werden sollen.)
Den Zugriff habe ich mir so vorgestellt, dass in der DLL ein leeres DM erstellt wird. Aus der Exe wird eine DLL-Prozedur gerufen, die das DM der Exe mit übergibt es dem leeren DM zuweist. Um Zugriff auf die Objekte des Exe - DM zur Designzeit zu haben muss ich dieses Teil in die Uses-Liste der Dll und des leeren DM eintragen. Genau hier kommt es zum Crash. Sobald das Teil auch nur in der Uses - Liste der DLL steht bekomme ich beim Programmende - Unbekannter Softwarefehler (0x0eedfade) an Stelle 0x77e7e592. Nachfolgend einige Code - Zeilen:

1. DLL

Delphi-Quellcode:
library DruckDLL;

uses
  Dialogs,
  SysUtils,
  Windows,
  Forms,
  Classes,
  PAGK_PrtAngBlk in 'PAGK_PrtAngBlk.PAS' {FAGK_PrtAngBlk},
  Globaldefs in '..\Globaldefs.pas',
  SDDataModul in 'SDDataModul.pas' {DatenModul: TDataModule},
  MainDataModul in '..\MainDataModul.pas' {IHSDataModul: TDataModule};

procedure Drucken_Angebot_Blanko(ModulInfo:TModulInfoRec; DataModul:TDataModule); stdcall;
begin
  DatenModul.Init(ModulInfo,DataModul);
  FAGK_PrtAngBlk:= TFAGK_PrtAngBlk.Create(nil);
  try
    FAGK_PrtAngBlk.ShowModal;
  finally
    FAGK_PrtAngBlk.Free;
  end
end;

exports Drucken_Angebot_Blanko;

begin
  Application.CreateForm(TDatenModul, DatenModul);
end.
2. Leeres Datenmodul

Delphi-Quellcode:
unit SDDataModul;

interface

uses
  SysUtils, Classes, Globaldefs;

type
  TDatenModul = class(TDataModule)
  private
    { Private-Deklarationen }
    FModulInfo: TModulInfoRec;
    FMDataModul: TDataModule;
  public
    { Public-Deklarationen }
    procedure Init(aModulInfo:TModulInfoRec; aDataModul:TDataModule);
    property MDataModul: TDataModule read FMDataModul;
    property ModulInfo: TModulInfoRec read FModulInfo write FModulInfo;
  end;

var
  DatenModul: TDatenModul;

implementation

{$R *.dfm}

procedure TDatenModul.Init(aModulInfo:TModulInfoRec; aDataModul:TDataModule);
begin
  FModulInfo:=aModulInfo;
  FMDataModul:=aDataModul;
end;

end.
Momentan wird die DLL nur von der Exe geladen. Nach Programmende kommt es zu obigem Crash. Ich habe leider keine Ahnung, wo ich noch suchen sollte.

Wenn jemand helfen kann, dann vielen Dank im voraus. Außerdem hoffe ich, dass ich das richtige Forum erwischt habe.

Gruß alfred :witch:

Hansa 4. Jul 2005 19:38

Re: Problem mit dem Datenmodul
 
Das Ganze ist sehr abstrakt ! Die Glaskugel sagt aber : da wird irgendwas nicht richtig initialisiert. 8) Insbesondere die F.... machen mir Kopfschmerzen !


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