AGB  ·  Datenschutz  ·  Impressum  







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

DLLs einbinden

Ein Thema von CalganX · begonnen am 10. Feb 2005
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

DLLs einbinden

  Alt 10. Feb 2005, 19:23
Ich habe bisher keinen Beitrag gefunden, der kurz Quelltexte zeigt, wie man eine DLL einbinden kann. Ich gehe hier nicht auf das Programmieren von DLLs ein oder was der Vortei der beiden genannten Methoden, sondern nur, wie das funktioniert.

0. Beispiel-Funktion
Für die beiden folgenden Punkte gehen wir davon, aus dass eine DLL namens dptest.dll im gleichen Verzeichnis, wie die Anwendung liegt und folgende Funktion exportiert:
function Addieren(a, b: integer): integer; 1. Direktes Einbinden
Für das direkte Einbinden einer Funktion muss im interface-Abschnitt folgendes eingefügt werden:
Delphi-Quellcode:
const
  DLLNAME = 'dptest'; // Unter Win9x funktioniert das, unter NT/XP/etc. MUSS AUF JEDENFALL die Endung mit angegeben werden!

{...}

function Addieren(a, b: integer): integer; external DLLNAME; stdcall;
1. Dynamisches Einbinden zur Laufzeit
Empfohlen, wenn sich zum Beispiel der Dateiname der DLL ändern kann oder man sicher gehen will, dass die DLL wirklich vorhanden ist (nicht dass ein User die "versehentlich" gelöscht hat).
Delphi-Quellcode:
type
  TAddierenProc = function(a, b: integer): integer; stdcall;

var
  hDLL: THandle; // Handle zur DLL
  iRes: integer; // Ergebnis der Funktion
  FarProc: TAddierenProc;
  sDLLPath: string;

begin
  sDLLPath := ExtractFilePath(Application.ExeName) + 'dptest.dll';
  hDLL := LoadLibrary(sDLLPath);
  if hDLL = 0 then begin
    ShowMessage('DLL konnte nicht geladen werden.');
    Exit;
  end;

  try
    FarProc := GetProcAddress(hDLL, 'Addieren');
    if Assigned(FarProc) then
      iRes := FarProc(1, 2);
  except
    ShowMessage('Funktion der DLL konnte nicht ausgeführt werden.');
  end;
end;
Beide Methoden haben ihre Vor- und Nachteile.

Chris
  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 11:04 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