Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.628 Beiträge
Delphi 12 Athens
|
Re: Mit DLLs arbeiten
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
|
|
Zitat
|