AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi DLL automatisch nach Procedureaufruf beenden
Thema durchsuchen
Ansicht
Themen-Optionen

DLL automatisch nach Procedureaufruf beenden

Ein Thema von Tommy82 · begonnen am 6. Jun 2007 · letzter Beitrag vom 6. Jun 2007
Antwort Antwort
Seite 1 von 2  1 2      
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#1

DLL automatisch nach Procedureaufruf beenden

  Alt 6. Jun 2007, 11:31
Hallo,

Ich habe eine DLL-Datei, welche ich zur Laufzeit einbinde.
In der DLL habe ich ein Formular, welches ich folgendermaßen aufrufe:

Delphi-Quellcode:
var Uebergabe : TUebergabe;
BEGIN
 Uebergabe := TUebergabe.Create(NIL);
 Uebergabe.ShowModal;
 Uebergabe.Free;
END;
Wenn die Form aktiviert wird, startet eine Procedure, führt die Anweisungen aus und dann soll diese DLL wieder schließen. Normalerweise schließe ich die DLL mit self.Close . Aber Irgendwie geht das nicht. Es tut sich nix. Wenn ich mit self.release beende, kann ich nicht mehr auf das Hauptfenster zugreifen (bzw. nix anklicken).

Was mache ich falsch ?

mfg

Tommy82
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: DLL automatisch nach Procedureaufruf beenden

  Alt 6. Jun 2007, 11:36
Zitat von Tommy82:
In der DLL habe ich ein Formular, welches ich folgendermaßen aufrufe:
Wo rufst Du das Formular denn auf? Aus der Hauptanwendung oder aus einer Funktion innerhalb der DLL?
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
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#3

Re: DLL automatisch nach Procedureaufruf beenden

  Alt 6. Jun 2007, 11:48
Hallo,

Formular wird aus der DLL aufgerufen
Delphi-Quellcode:
Procedure Uebergabe;
var Uebergabe : TUebergabe;
BEGIN
 Uebergabe := TUebergabe.Create(NIL);
 Uebergabe.ShowModal;
 Uebergabe.Free;
END;
Procedure des Hauptprogramms :
Delphi-Quellcode:
Procedure TForm1.zeige_DLL(Dateiname, Name:String);
var
 DLL:TDLL;
 Handle : THandle;
BEGIN
 Handle := LoadLibrary(PCHAR(ExtractFilePath(ParamStr(0)) + '\PlugIns\' + Dateiname));
 IF Handle <> 0 THEN
 BEGIN
  @DLL := GetProcAddress(Handle, PCHAR(Name));
  IF @DLL <> NIL THEN DLL ELSE Showmessage('Fehler beim Laden der Datei "'+Dateiname+'"');
 END;
 FreeLibrary(Handle);
EN
Aufruf der Procedure
Delphi-Quellcode:
procedure TForm1.bergabe1Click(Sender: TObject);
begin
 Zeige_DLL('Preissuchmaschine.dll','Uebergabe');
end;
Der Aufruf selber funktioniert einwandfrei, aber das beenden geht leider nur manuell. Will es aber automatisch nach beenden der Procedure haben.

mfg

Tommy82
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: DLL automatisch nach Procedureaufruf beenden

  Alt 6. Jun 2007, 11:53
Wann innerhalb der DLL wird die Procedure denn aufgerufen? OnCreate z.B. funktioniert Close nicht.
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
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#5

Re: DLL automatisch nach Procedureaufruf beenden

  Alt 6. Jun 2007, 11:59
Delphi-Quellcode:
procedure TUebergabe.FormActivate(Sender: TObject);
begin
 Start;
end;

Procedure TUebergabe.Start;
BEGIN
...
 self.close // self.release geht auch nicht
END;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: DLL automatisch nach Procedureaufruf beenden

  Alt 6. Jun 2007, 12:01
Komisch, sollte eigentlich gehen. Aber mir ist was anderes aufgefallen.
Delphi-Quellcode:
Procedure Uebergabe;
var Uebergabe : TUebergabe;
BEGIN
Uebergabe := TUebergabe.Create(NIL);
Uebergabe.ShowModal;
Uebergabe.Free;
END;
Procedure und Variable heißen beide Uebergabe? Und das frisst der Compiler?
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
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#7

Re: DLL automatisch nach Procedureaufruf beenden

  Alt 6. Jun 2007, 12:02
Ja, das frisst der. Habe das aber auch mal geändert und geht trotzdem nicht.

mfg

Tommy82
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: DLL automatisch nach Procedureaufruf beenden

  Alt 6. Jun 2007, 13:50
Zitat von Tommy82:
Normalerweise schließe ich die DLL mit self.Close .
Dir ist bewusst, dass du totalen Quatsch schreibst? Eine DLL ist eine kompilierte Datei die anderen Prozessen Funktionen zur Verfügung stellt. Eine DLL läd man und man entläd sie wieder. Man schließt sie aber nicht.
Und das: self.Close ist der Aufruf einer Methode einer Klasse. Ein real existierendes Objekt in Form einer Datei, kennt keine Methoden im Gegensatz zu einem abstrakten Gebilder, wie es eine Klasse ist. Eine Datei kann keine Methode Close haben.
Kleiner Tipp: Vor dem Posten erstmal die Gedanken sortieren und überlegen, was man eigentlich will und wo das Problem eigentlich ist. Meist erübrigt sich dann schon ein Posting.

Was Forms in DLLs angeht, kannst du dir mal das Tutorial von Olli angucken: http://www.michael-puff.de/dirindex....orte/Assarbad/
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#9

Re: DLL automatisch nach Procedureaufruf beenden

  Alt 6. Jun 2007, 14:19
Hallo,

dann habe ich mich falsch ausgedrückt. Ich möchte das Formular schießen. Die DLL schließt sich von selber, das weiß ich.
Das Formular schließe ich aber mit "Self.Close".
Das funktioniert auch wenn ich das manuell (über einen Button) mache. Aber wenn ich es mit in die OnActivate mache, klappts net.

mfg

Tommy82
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: DLL automatisch nach Procedureaufruf beenden

  Alt 6. Jun 2007, 14:22
Die DLL schließt sich aber nur von selbst, wenn du sie nicht zur Laufzeit dynamisch lädst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:40 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