Thema: Delphi Mit DLLs arbeiten

Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.628 Beiträge
 
Delphi 12 Athens
 
#19

Re: Mit DLLs arbeiten

  Alt 12. Jan 2008, 14:20
Zitat von Christian18:
Hallo,

ihr redet die ganze zeit von Pchar und so, hat jemand vieleicht mal ein kleines beispiel, wie sowas aussieht?

MFG Christian18
Jepp, biddeschön. Die DLL (HauptUnit):
Delphi-Quellcode:
library TestDLL;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der
  ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
  Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
  Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
  Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
  sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
  Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
  Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
  Informationen als PChar- oder ShortString-Parameter übergeben. }

  
uses
  DLLUnit in 'DLLUnit.pas';

exports Meldung;

begin
end.
DLLUnit:
Delphi-Quellcode:
unit DLLUnit;

interface

uses Windows;

function Meldung(sMeldung: PChar): DWORD;stdcall;

implementation

function Meldung(sMeldung: PChar): DWORD;stdcall;
begin
  Result := MessageBox(0,sMeldung,nil,0);
end;

end.
Und die Hauptunit des aufrufenden Programms:
Delphi-Quellcode:
unit AppUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function Meldung(sMeldung: PChar): DWORD;stdcall;external 'TestDLL.dll';


procedure TForm1.FormCreate(Sender: TObject);
begin
  Meldung('Huhu');
end;

end.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat