AGB  ·  Datenschutz  ·  Impressum  







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

DLL statisch laden

Ein Thema von norwegen60 · begonnen am 24. Nov 2017 · letzter Beitrag vom 25. Nov 2017
Antwort Antwort
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

DLL statisch laden

  Alt 24. Nov 2017, 13:49
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
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#2

AW: DLL statisch laden

  Alt 24. Nov 2017, 14:58
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
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: DLL statisch laden

  Alt 24. Nov 2017, 23:36
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
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#4

AW: DLL statisch laden

  Alt 24. Nov 2017, 23:43
Da beide Varianten die Deklaration im interface stehen haben, ist der Zugriff von anderen Units aus bei beiden Varianten möglich.

Grüße
Dalai
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: DLL statisch laden

  Alt 25. Nov 2017, 07:22
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.
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#6

AW: DLL statisch laden

  Alt 25. Nov 2017, 07:41
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
..., 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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: DLL statisch laden

  Alt 25. Nov 2017, 10:59
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#8

AW: DLL statisch laden

  Alt 25. Nov 2017, 12:15
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.
  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 22: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