| Autor |
Beitrag |
Danny87
      
Beiträge: 688
Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
|
Verfasst: Fr 22.12.06 16:06
Hey Leute,
ich habe ein Package "pkg001.bpl" mit einer Unit "uFunc.pas" und habe dieses mit
Delphi-Quelltext 1:
| LoadPackage("pkg001.bpl"); |
geladen.
Bis dahin funktionierts.
Aber wie kann ich nun zum Beispiel die Funktion "GetChange();" aufrufen bzw benutzen?
Ich habe die Funktion folgendermaßen in uFunc.pas deklariert:
Delphi-Quelltext 1: 2: 3: 4:
| function GetChange(sUsr : string):integer; begin
end; |
Gruss
Daniel
|
|
Danny87 
      
Beiträge: 688
Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
|
Verfasst: Mo 25.12.06 23:12
Hat wirklich keine eine Idee?
Ich weiss auch leider nicht genau wonach ich suchen muss/soll.
Ich freue mich übrigens auch über Links zur Lösung oder so was  *g*
Gruss
Daniel
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Di 26.12.06 00:10
Hmm, also ich hab schon ein wenig mit bpls gearbeitet. Aber eigentlich machen bpls erst Sinn, wenn du auch OOP werden willst. Ansonsten tuen es DLLs genauso.
Was jetzt alles im Detail mit BPLs möglich ist, würde mich teilweise auch noch interessieren, aber:
Du könntest dir ja eine Klasse schreiben, die diese Procedure schon beinhaltet (aber virtual und evtl. auch abstrakt). Im Package leitest du von dieser Klasse ab und überschreibst diese Methoden via override.
Das ist alles sehr ausführlich, ich kam auf die ganze Sache über dieses Topic. Es ist irgendwie so jetzt schwer zu erklären. Wenn du willst, kannst du dich mal bei mir über ICQ melden (s. Profil) und ich kann dir ein paar Codestücke geben, was ich bisher habe.
Gruß alias5000
_________________ Programmers never die, they just GOSUB without RETURN
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 26.12.06 00:20
Wobei ein Problem bei mir die Geschwindigkeit war. Ich biete für eines meiner Programme Plugin-Unterstützung an. Dabei können auch Packages als Plugins benutzt werden. Leider laden die Packages (bei meinen Tests jedenfalls) deutlich langsamer als "normale" DLLs.
Aus dem Grund musste ich das Laden dieser Plugins in einen Hintergrundthread verlagern... Nur die DLL-Plugins werden im Hauptthread geladen.
Ich glaube eigentlich nicht, dass es an meiner Implementierung lag, aber ausschließen kann ich es nicht. Der Aufruf von LoadPackage war jedenfalls das was so lange gedauert hat. (Im Gegensatz zu LoadLibrary eben)
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 26.12.06 02:56
LoadLibrary läd einfach nur die DLL und führt deren Main-Methode aus.
Bei LoadPackage wird neben dem LoadLibrary-Aufruf noch die Halbe Anwendung und Funktionstabelle gepatcht, weshalb das natürlich um einiges länger brauch ... Wenn man also nicht unbedingt OOP brauch, sollte man Packages vermeiden ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Danny87 
      
Beiträge: 688
Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
|
Verfasst: Di 26.12.06 03:55
Also, der Grund für diesen Thread ist das Ende von diesem Thread
Die Idee war, die Funktion aus der dort besprochenen dll in ein Package zu packen und es so zu versuchen.
Gruss
Daniel
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 26.12.06 10:46
Naja, ich schreib dazu mal was in dem Thread. Ich denke das kann man einfach anders lösen...
|
|
|