Registriert seit: 25. Aug 2009
Ort: Blomberg
120 Beiträge
|
Re: DLLs erstellen und in Programm einbauen
30. Nov 2009, 12:50
Hallo,
ich habe es jetzt geschafft die Datei einzubinden.
Hier der Code:
Delphi-Quellcode:
unit rechner;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, rechnen;
type
TForm1 = class(TForm)
cmdGo: TButton;
edZahl1: TEdit;
edZahl2: TEdit;
lblErgebnis: TLabel;
procedure cmdGoClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.cmdGoClick(Sender: TObject);
var
zahl1, zahl2: integer;
begin
zahl1 := strtoint(edZahl1.Text);
zahl2 := strtoint(edZahl2.Text);
lblergebnis.Caption := inttostr(rechnen.addieren(zahl1, zahl2));
end;
end.
Delphi-Quellcode:
unit rechnen;
interface
uses
windows, sysutils;
type
TSummenFunktion = function(zahl1, zahl2: integer): integer; stdcall;
// TDifferenzFunktion = function(zahl1, zahl2: integer): integer; stdcall;
function addieren(zahl1, zahl2: integer): integer;
//function subtrahieren(zahl1, zahl2: integer): integer;
implementation
function addieren(zahl1, zahl2: integer): integer;
var
SummenFunktion: TSummenFunktion;
Handle: THandle;
begin
Handle := LoadLibrary(PChar(ExtractFilePath(ParamStr(0)) + ' rechne.dll'));
if Handle <> 0 then
begin
@SummenFunktion := GetProcAddress( Handle, ' addieren');
if @SummenFunktion <> nil then begin
result := SummenFunktion(zahl1, zahl2);
end;
FreeLibrary( Handle);
end;
end;
end.
Aber egal welche Zahlen ich zum addieren eingebe, ich bekomme immer: 4475786 als Ergebnis.
Kann mir jemand sagen wieso?
Edit: fehler gefunden.
@SummenFunktion := GetProcAddress(Handle, 'addieren');
muss so aussehen:
@SummenFunktion := GetProcAddress(Handle, 'addiere');
Aber kann mir jemand sagen wofür das @ bei "@SummenFunktion" steht?
Gruß,
Schnittcher
|
|
Zitat
|