Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   DLL statisch laden (https://www.delphipraxis.net/194463-dll-statisch-laden.html)

norwegen60 24. Nov 2017 13:49

DLL statisch laden
 
Hallo zusammen,
die meisten, die sich mit DLL beschäftigen haben wohl schon das Beispiel gesehen
Delphi-Quellcode:
unit DLLUnit;

interface

Uses Windows;

Function addiere (Value1, Value2 : Integer) : Integer; stdCall;

implementation

Function addiere (Value1, Value2 : Integer) : Integer; stdCall; external 'rechne.DLL';

end.
Ich habe es bisher nie so gemacht, sondern nur so:
Delphi-Quellcode:
unit DLLUnit;

interface

Uses Windows;

Function addiere (Value1, Value2 : Integer) : Integer; stdCall; external 'rechne.DLL';

implementation

end.
d.h. alles im Interface-Sector und nichts im Implementation. Mach ich da was falsch?
Funktionieren tut es.

Grüße
Gerd

Dalai 24. Nov 2017 14:58

AW: DLL statisch laden
 
Zitat:

Zitat von norwegen60 (Beitrag 1387100)
Mach ich da was falsch?

Soweit ich weiß: nein, du machst nichts falsch, und meiner Meinung nach ist es Geschmackssache. In den Delphi-Sourcen ist sehr oft (oder gar ausschließlich) die erste Variante zu finden (interface und implementation).

Im Laufe meines Delphi-Lebens hab ich schon beide Varianten benutzt (meist aber die zweite ohne implementation), aber ich kann dir nicht sagen, warum einmal die eine und ein andermal die andere.

Grüße
Dalai

EWeiss 24. Nov 2017 23:36

AW: DLL statisch laden
 
Zitat:

aber ich kann dir nicht sagen, warum einmal die eine und ein andermal die andere.
Ist doch Public\Global die erste.
Damit man aus anderen Units auf diese Funktion zugreifen kann.. oder?

gruss

Dalai 24. Nov 2017 23:43

AW: DLL statisch laden
 
Da beide Varianten die Deklaration im
Delphi-Quellcode:
interface
stehen haben, ist der Zugriff von anderen Units aus bei beiden Varianten möglich.

Grüße
Dalai

TiGü 25. Nov 2017 07:22

AW: DLL statisch laden
 
Das hab ich auch noch nie verstanden, ist doch wesentlich mehr Schreib/Textaufwand. Ich glaube, die Frage stellt sich jeder der die Delphi-Sourcen anschaut.

norwegen60 25. Nov 2017 07:41

AW: DLL statisch laden
 
Zitat:

Zitat von EWeiss (Beitrag 1387131)
Damit man aus anderen Units auf diese Funktion zugreifen kann.. oder?

Der Zugriff aus anderen Units ist definitiv auch bei der zweiten Variante möglich
Zitat:

Zitat von TiGü (Beitrag 1387136)
..., ist doch wesentlich mehr Schreib/Textaufwand.

Genau darum geht es mir.
Mehr Code macht einen Code ja nicht übersichtlicher und bei Änderungen muss ich an zwei Stellen ändern.
War abr nicht sicher, ob es nicht doch einen Sinn gibt.

Danke
Gerd

Bernhard Geyer 25. Nov 2017 10:59

AW: DLL statisch laden
 
Beide Angaben stellen eine statische Bindung der DLL dar.

Dynamisch wäre es wenn du es wie folgt machst:

http://delphifaq.com/faq/delphi_windows_API/f347.shtml

Oder man nutzt das verzögerte Laden mittels Schlüsselwort delayed, wenn man auch funktionsfähig sein will, auch wenn die DLL nicht vorhanden ist.

DrBob hat auch dazu einen Artikel geschrieben.

norwegen60 25. Nov 2017 12:15

AW: DLL statisch laden
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1387155)
Beide Angaben stellen eine statische Bindung der DLL dar.

Ja, das war mir bewusst. Die meisten meiner DLL lade ich dynamisch. z.B. vom Testfall abhängige Gerätetreiber.
z.B. die Benutzerverwaltung wird dagegen statisch geladen. Die ist immer die gleiche und wird auch immer ebnötigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 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