AGB  ·  Datenschutz  ·  Impressum  







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

DLL-Form mit show

Ein Thema von Mattze · begonnen am 11. Jul 2007 · letzter Beitrag vom 12. Jul 2007
Antwort Antwort
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

DLL-Form mit show

  Alt 11. Jul 2007, 18:41
Hallo,

also ich weiß nicht, wo ich noch suchen könnte...

Ich rufe im Hauptprogramm eine Form aus einer DLL auf.
Showmodal - alles klar.
Aber "ohne modal", nur show?
Zuerst musste ich das stdcall von der "Anzeigeprocedure" wegmachen. Sonst kam eine Zugriffsschutzverletzung. Ohne funktioniert es aber problemlos.
(Der Fehler kam direkt im show. Createn konnte er noch alles ordentlich. Nach dem Fehler ging das show aber ganz normal und sauber weiter!)

Ich lade die DLL dynamisch. Wenn ich nun das Hauptprogramm beende, will ich natürlich auch die DLL ordentlich entladen.
If VHandle<>0 then freelibrary(VHandle); Und das will er nicht. Fehler! Irgendein Read im ntdll.KiFastSystemCallRet will nicht und zwar gleich das Erste.
Wenn ich die DLL-Form aus dem Hauptprogramm freigebe, passiert das gleiche.
Wenn ich die DLL-Form in der DLL-Form schließe und danach das Hauptprogramm schließe, funktioniert es ordentlich.

Wer weiß, was man da machen kann?

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: DLL-Form mit show

  Alt 11. Jul 2007, 18:56
AFAIK darfst Du Formulare, die aus DLLs aufgerufen werden, generell nur über ShowModal aufrufen (oder der Herr Kosch lügt oder weiß es nicht besser )
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

Re: DLL-Form mit show

  Alt 11. Jul 2007, 19:44
hallo,

na ja, "darfst"?

Wie gesagt, es gibt absolut kein Problem (ohne stdcall)!
Die DLL-Form ist dann ordentlich bedienbar und auch das Hauptformular arbeitet gut.
(Mit windows.setparent kriegt man dann sogar fast MDI hin, wenn man kein Menumerging braucht. Heißt das eigentlich so?)
Wenn man die Bibliothek (sprich: den Handle) nicht wieder frei gibt (am Ende des Hauptprogramms), gibt es da auch keine Probleme mit dem Ende.
Wenn die DLL-Form aus der DLL-Form geschlossen wurde, gibt es auch mit dem Freigeben im Hauptprogramm keine Probleme.

Ergo: Ich sehe da momentan nicht richtig durch. Es geht und es geht auch nicht.

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: DLL-Form mit show

  Alt 11. Jul 2007, 19:48
stdcall ist nur notwendig wenn du die aufzurufende Funktion als Stdcall declarierst. Ich glaub du solltest dich über die Aufrufkonventionen und deren Verwendung mal schlauch machen. Und vor allem den Teil im DLL-Projekt ganz obe lesen und verstehen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#5

Re: DLL-Form mit show

  Alt 12. Jul 2007, 10:29
Hallo SirThornberry,

bist Du mir böse oder warum "Thema verfehlt - 5"?
Es geht nicht um das Stdcall, wenn ich mal erinnern dürfte, sondern um das show (bzw. showmodal) einer DLL-Form und das missglückende Freigeben der Bibliothek am Ende des Hauptprogramms.

Ich programmiere nicht seit gestern und weiß (in der Regel) was ich machen kann und wie ich es machen muss. Das gilt auch für Aufrufkonventionen.

Gut, ich habe bisher keine DLLs programmiert, weil es einfach nicht notwendig war. Notwendig ist es jetzt zwar auch nicht, aber passend.
Und bevor ich mich mit irgendeinem neuen Thema befasse, lese ich alles mögliche, was ich dazu bekommen kann. Machst Du das anders? Und da steht auch einiges dazu drin, was Du empfiehlst - oder sollten das alle anderen vergessen haben?

Muss Deine tolle Antwort wirklich so beleidigend ausfallen? Ich gucke und probiere es fast immer aus und versuche SELBER ein Lösung zu finden, BEVOR ich frage.

Gruß
Mattze
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#6

Re: DLL-Form mit show

  Alt 12. Jul 2007, 17:20
Wie wurde die Form erstellt? Von dir mit Delphi? Wenn ja, dürfte das was für dich sein: http://delphi.about.com/b/a/257771.htm
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#7

Re: DLL-Form mit show

  Alt 12. Jul 2007, 18:38
Hallo,

hab's eben rausbekommen.
Wie üblich habe ich an der völlig falschen Stelle gesucht. Die DLL-Form mit show geht einwandfrei!
Nur das windows.setparent spielt nicht mit.
Vor dem Schließen des Hauptprogrammes muss die parentform der DLL-Form wieder vom Handle der "Hauptform" gelöst werden (windows.setparent(DLL_Form.handle,0). Das ist alles und dann geht es in Ordnung!

Ich gucke aber trotzdem noch zu Delphi.about. Danke!
Man kann ja nie wissen...

Gruß
Mattze
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#8

Re: DLL-Form mit show

  Alt 12. Jul 2007, 18:41
Hab auch ein Projekt gehabt, wo Forms per "Plugin-System" dynamisch in eine Anwendung eingebunden wurden. Das von dir geschilderte Problem hatte ich mit den Artikeln von delphi.about.com nie. (Omg, das klingt ja wie Werbung )
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#9

Re: DLL-Form mit show

  Alt 12. Jul 2007, 19:23
Hallo,

den Artikel (und die anderen von delphi.about über DLLs) habe ich natürlich schon gelesen.
Aber das war eben etwas ganz spezielles. Es ist eigentlich logisch, dass setparent da abwinkt. Hätte ich auch früher drauf kommen können.
Aber im Nachhinein ist alles klar, logisch und soooo eindeutig!

Gruß
Mattze

PS: Übrigens habe ich jetzt das Problem, dass bei Unloadlibrary das Hauptprogramm (ohne Fehlermeldung) geschlossen wird. (Ein globales Atom aus dem Hauptprogramm bleibt erhalten!) Nun ja, die "Späße" reißen nicht ab...
  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 20:55 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