AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Form in DLL in Verbindung mit Datenmodule
Thema durchsuchen
Ansicht
Themen-Optionen

Form in DLL in Verbindung mit Datenmodule

Offene Frage von "AirJordan"
Ein Thema von AirJordan · begonnen am 1. Dez 2007 · letzter Beitrag vom 2. Dez 2007
Antwort Antwort
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#1

Form in DLL in Verbindung mit Datenmodule

  Alt 1. Dez 2007, 15:54
Hallo,

hoffe ihr könnt mir einen Tipp geben, wie man folgende DLL´s korrekt erstellen kann.

Ich habe eine Anwendung die sich nach dem Start in die Taskleiste verschiebt. Von dort kann man dann die einzelnen
Formulare aufrufen. Es handelt sich immer um Formulare die Verbindungen zu einem Datenmodul haben. Ich möchte diese
in DLL´s auslagern.

Ich habe in der jeweilgen Projektdatei der DLL´s folgenden Aufbau:

Delphi-Quellcode:
library formularName1;

uses
  Forms,
  formularName1 in 'form1.pas{form1},
  formularDaten in 'formdaten.pas{formularDaten: TDataModule};

{$E dll}

{$R *.res}

procedure ShowFormular1; stdcall;
begin
  formularDaten := TformularDaten.Create(Application);
  formularName1 := TformularName1.Create(Application);
  try
    formularName1.ShowModal;
  finally
    formularName1.Release;
    formularDaten.Free;
  end;
end;

exports ShowFormular1;

begin
end.
Das Hauptprogramm erzeugt beim Start auch eine Instanz des DatenModuls. Das habe ich aber bereits einmal
komplett entfernt. Trotzdem wird nach dem Beenden des Programms (nicht beim Schliessen der Formulare aus
der DLL!) eine Exception ausgelöst.

Wie baut man soetwas am besten auf? Hoffe ihr könnt mir einen Tipp geben. Ich habe hier schon gesucht, aber
eine solche DLL / Konstellation nicht gefunden.

Grüße
Holger
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Form in DLL in Verbindung mit Datenmodule

  Alt 2. Dez 2007, 09:05
Delphi-Quellcode:
    formularName1.Release;
    formularDaten.Free;
Doppelt gemoppelt! Bei ShowModal reicht einfach ein Free. Bei Show sollte man mit Release die freigabe erledigen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Heffalump

Registriert seit: 3. Aug 2005
278 Beiträge
 
RAD-Studio 2009 Ent
 
#3

Re: Form in DLL in Verbindung mit Datenmodule

  Alt 2. Dez 2007, 10:12
Zitat von Bernhard Geyer:
Delphi-Quellcode:
    formularName1.Release;
    formularDaten.Free;
Doppelt gemoppelt! Bei ShowModal reicht einfach ein Free. Bei Show sollte man mit Release die freigabe erledigen.
Solche Fragen stellen sich bei .Net einfach nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Form in DLL in Verbindung mit Datenmodule

  Alt 2. Dez 2007, 10:15
Zitat von Heffalump:
Zitat von Bernhard Geyer:
Delphi-Quellcode:
    formularName1.Release;
    formularDaten.Free;
Doppelt gemoppelt! Bei ShowModal reicht einfach ein Free. Bei Show sollte man mit Release die freigabe erledigen.
Solche Fragen stellen sich bei .Net einfach nicht.
Und? Erstens ist es eine Frage für Win32 und Ressoucentechnisch kann man auch unter .NET Probleme bekommen wenn man das Dispose-Pattern zur freigabe von Handels etc. nicht korrekt anwendet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Form in DLL in Verbindung mit Datenmodule

  Alt 2. Dez 2007, 11:18
Zitat von Bernhard Geyer:
Delphi-Quellcode:
    formularName1.Release;
    formularDaten.Free;
Doppelt gemoppelt! Bei ShowModal reicht einfach ein Free. Bei Show sollte man mit Release die freigabe erledigen.
Hallo Bernhard,

danke für den Hinweis. Das Datenmodul wird dann auch mit freigegeben? Es wird ja in der Routine vor dem
Formular erst erstellt!

Meine Exception ist geblieben.

Zitat:
exception class : EAccessViolation
exception message : Zugriffsverletzung bei Adresse 5B0F1531 in Modul 'uxtheme.dll'. Lesen von Adresse 00000014.

main thread ($970):
5b0f1531 +011 uxtheme.dll
5b0f495a +01a uxtheme.dll CloseThemeData
Die Ursache scheint also noch an einer anderen Stelle zu liegen.

Grüße
Holger
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Form in DLL in Verbindung mit Datenmodule

  Alt 2. Dez 2007, 17:13
Zitat von AirJordan:
danke für den Hinweis. Das Datenmodul wird dann auch mit freigegeben? Es wird ja in der Routine vor dem
Formular erst erstellt!
Sorry. Verlesen. Mach 2*Free. Release ist nur mit Nicht-Modal angezeigten Formularen nötig um keine Windows-messages auf freigegene Formulare "aufschlagen" zu lassen.

Zitat von AirJordan:
exception class : EAccessViolation
exception message : Zugriffsverletzung bei Adresse 5B0F1531 in Modul 'uxtheme.dll'. Lesen von Adresse 00000014.

main thread ($970):
5b0f1531 +011 uxtheme.dll
5b0f495a +01a uxtheme.dll CloseThemeData
Verwendst du Standard-VCL-Controls oder 3th-Party-Kompos.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Form in DLL in Verbindung mit Datenmodule

  Alt 2. Dez 2007, 17:35
Zitat von Bernhard Geyer:
Sorry. Verlesen. Mach 2*Free. Release ist nur mit Nicht-Modal angezeigten Formularen nötig um keine Windows-messages auf freigegene Formulare "aufschlagen" zu lassen.
Ok, danke. Habe ich korrigiert.

Zitat von Bernhard Geyer:
Verwendst du Standard-VCL-Controls oder 3th-Party-Kompos.
Ja, ich verwende 3th-Party-Komponenten.

Grüße
Holger
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Form in DLL in Verbindung mit Datenmodule

  Alt 2. Dez 2007, 18:03
Zitat von AirJordan:
Ja, ich verwende 3th-Party-Komponenten.
Und welche? Evtl kennt ja jemand ähnliche Probleme mit diesen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Form in DLL in Verbindung mit Datenmodule

  Alt 2. Dez 2007, 18:08
Hallo Bernhard,

sorry, das ich mir alles so langsam aus der Nase ziehen lasse.

In dieser DLL sind DBMaskEdit-Felder und ein Grid von DevExpress sowie PngButtons.

Grüße
Holger
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Form in DLL in Verbindung mit Datenmodule

  Alt 2. Dez 2007, 19:16
Antwort und Lösung gefunden


Delphi-Quellcode:
library formularName1;

uses
  SysUtils,
  Classes,
  Forms,
  dxThemeManager,
  formularName1 in 'form1.pas{form1},
  formularDaten in 'formdaten.pas{formularDaten: TDataModule};

{$E dll}

{$R *.res}

procedure CloseThemen;
begin
  CloseAllThemes;
end;

procedure ShowFormular1; stdcall;
begin
  formularDaten := TformularDaten.Create(Application);
  formularName1 := TformularName1.Create(Application);
  try
    formularName1.ShowModal;
  finally
    FreeAndNil(formularName1);
    FreeAndNil(formularDaten);
  end;
end;

exports ShowFormular1,
        CloseThemen;

begin
end.
Und im Hauptprogramm:

Delphi-Quellcode:

[..]

initialization

finalization
  CloseThemen;
Und schon gibt es keine Exception.

Grüße
Holger
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:21 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