Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DLL wegen RTTI zu einem Package umbauen (https://www.delphipraxis.net/75979-dll-wegen-rtti-zu-einem-package-umbauen.html)

QuickAndDirty 28. Aug 2006 09:27


DLL wegen RTTI zu einem Package umbauen
 
Hallo,
Ich muss ein DLL (wegen der RTTI)in ein Package umbauen und habe verschiedene Fragen.

Ist ein Package zur laufzeit ladbar?
Nach dem was ich über LoadPackage gelesen hab ist dem wohl so.
Aber wie lautet dann das Äquivalent zu getProcAddress?

Überhaupt was muss ich jetzt machen die DLL Methoden in eine
Unit Packen und diese Unit in ein Package stecken?

Kann ich ein Package getrennt von der Anwendung weitergeben?

Eigentlich brauche ich nur zu wissen wie ich das in ein Runtime-Package packe.

Hilfe!!

Elvis 28. Aug 2006 10:05

Re: DLL wegen RTTI zu einem Package umbauen
 
Ein Package *ist* eine DLL, aber eine mit Metadaten, die die Delphi RTL verwerten kann.
"GetProcAddress" funktioniert dort also auch, genau wie die exports clause.

QuickAndDirty 28. Aug 2006 11:14

Re: DLL wegen RTTI zu einem Package umbauen
 
Sähe das so aus
Delphi-Quellcode:
Package bla;

uses dbtables, classes, ect;

Fn1(a,v:Tdatentyp):TBla;
Begin
  Result := Rechnung1;
end;

Fn2(a,v:Tdatentyp):TBla;
Begin
  Result := Rechnung2;
end;

Fn3(a,v:Tdatentyp):TBla;
Begin
  Result := Rechnung3;
end;

exports
  Fn1,Fn2,Fn3;

Begin

end;
Und läst es sich dann auch mit
GetModuleHandle bzw. LoadLibrary zur Laufzeit laden?

Sorry, aber wenn ich hier im D7 versuche ein Package zu machen
ists einfach nur eine Include und Contains Liste. Wie mache
ich Runtime Packages?

mkinzler 28. Aug 2006 11:24

Re: DLL wegen RTTI zu einem Package umbauen
 
Zitat:

Sorry, aber wenn ich hier im D7 versuche ein Package zu machen
ists einfach nur eine Include und Contains Liste. Wie mache
ich Runtime Packages?
In dem du das Package compilierst.

QuickAndDirty 28. Aug 2006 11:30

Re: DLL wegen RTTI zu einem Package umbauen
 
mkMinzler, in meinem Package ist ja keine Function enthalten
die sich exportieren ließe. ich kann da nur units und weiter packages
hinzufügen. was soll ich damit schon anfangen?

kann mich mal bitte jemand mit nem Beipiel von einem Package bewerfen
das eine Funktion exportiert.

jbg 28. Aug 2006 11:34

Re: DLL wegen RTTI zu einem Package umbauen
 
Zitat:

Zitat von QuickAndDirty
was soll ich damit schon anfangen?

Na eine Unit hinzufügen.

Zitat:

kann mich mal bitte jemand mit nem Beipiel von einem Package bewerfen
das eine Funktion exportiert.
Packages exportieren ganze Units und nicht nur einzelene Funktionen. Der Export einer Unit wird über das hinzufügen der Unit in die contains-Klausel des Packages erzieht. Der Import geht dann über die einfache Nutzung der Unit in der EXE-Datei (oder anderen Packages). Dafür musst du aber das Package bei der EXE unter "Projektoptionen/Packages - Mit Runtimepackages kompilieren" hinzufügen.

mkinzler 28. Aug 2006 11:36

Re: DLL wegen RTTI zu einem Package umbauen
 
Zitat:

Der Import geht dann über die einfache Nutzung der Unit in der EXE-Datei (oder anderen Packages). Dafür musst du aber das Package bei der EXE unter "Projektoptionen/Packages - Mit Runtimepackages kompilieren" hinzufügen.
Oder durch Laden der Libraray wie bei einer Dll.

jbg 28. Aug 2006 11:44

Re: DLL wegen RTTI zu einem Package umbauen
 
Zitat:

Zitat von mkinzler
Oder durch Laden der Libraray wie bei einer Dll.

Dann brauchst du aber ein weiteres Package (mit Units), über das du dann die Kommunikation regelst, außer du nutzt das BPL wie eine DLL (wobei die exports-Anweisung in eine Unit verlager werden muss).

QuickAndDirty 28. Aug 2006 12:02

Re: DLL wegen RTTI zu einem Package umbauen
 
Zitat:

Oder durch Laden der Libraray wie bei einer Dll.
Genau so muss ich es haben.
Nur wie mache ich dem Package klar das es bestimmte Funktionen veröffentlichen soll?

Soll ich meine DLL Funktionen in eine Unit packen. Die Köpfe ins Interface und fertig?
Oder noch eienen Exports teil dazu?

Sorry ich weiß das sich die fragen selten blöd anhören aber ich habe bisher immer nur Packages
für Komponenten gebastelt die direkt mit in die Anwendung kompiliert wurden.
Naja und jetzt bin ich dabei alle BDE Bezüge aus unserer Anwendung zu entfernen. Dafür habe ich mir
eigene TDatasets geschrieben die die Datenbank Virtualisieren. So bracht man quasi nur ein neues DLL
Schreiben um die Datebank zu wechseln, das ging auch gut. Doch leider ließ sich das RTTI Probelm
irgendwann nicht mehr umgehen(sonst half immer in temporäres objekt kopieren).

Und jetzt steh ich da mit ner DLL (bestimmt über Hundert Funktionen) auf der einen Seite und fertigen Wraperklassen
auf der anderen Seite. Und hätte eigentlich ein Package gebraucht. :(

Zitat:

außer du nutzt das BPL wie eine DLL (wobei die exports-Anweisung in eine Unit verlager werden muss).
Gehört Exports bei Packages in die Unit mit den Funktionen? In den Interface oder implemantation Teil?

jbg 28. Aug 2006 12:07

Re: DLL wegen RTTI zu einem Package umbauen
 
Zitat:

Zitat von QuickAndDirty
Nur wie mache ich dem Package klar das es bestimmte Funktionen veröffentlichen soll?

Ich zitiere mich mal selbst (wie so des öfteren)
Zitat:

wobei die exports-Anweisung in eine Unit verlager werden muss


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 Uhr.
Seite 1 von 4  1 23     Letzte »    

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