Einzelnen Beitrag anzeigen

Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#1

Kleine Frage zum DLL einbinden

  Alt 15. Jan 2005, 11:48
Hi,

ich hab mir eine kleine DLL geschrieben:

Delphi-Quellcode:
library Tests;

uses
  SysUtils,
  Classes,
  Windows;

{$R *.res}

function Send(Titel: PChar; Msg: Cardinal): Boolean;
var
  Handle: HWND;
begin
  Handle := FindWindow(Titel, nil);
  if Handle <> 0 then
  begin
    SendMessage(Handle, Msg, 0, 0);
    Result := true;
  end
  else
    Result := false;
end;

exports
    Send;

begin
end.
Ist nur eine Test DLL.

Jetzt gibts ja verschiedene Arten zum einbinden. Hier mal die, die ich kenne:

Delphi-Quellcode:
{ 1. Art }
unit auslagerdatei;

interface

uses
  Windows;

type
  TSummenFunktion = function (zahl1, zahl2: Integer) : Integer; stdCall;
  function addieren(zahl1, zahl2: integer): Integer;

implementation

function addieren(zahl1, zahl2: Integer): Integer;
var
  SummenFunktion: TSummenfunktion;
  Handle: THandle;
begin
  Handle := LoadLibary(PChar(ExtractFilePath(ParamStr(0)) + 'rechnen.dll'));
  if Handle <> 0 then
  begin
    @SummenFunktion := GetProcAddress(Handle, 'addiere');

    if @SummenFunktion <> nil then
    begin
      Result := SummenFunktion(zahl1, zahl2);
    end;
    FreeLibary(Handle);
  end;
end;

end.

{ 2. Art }
unit pro;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

function Send(Titel: PChar; Msg: Cardinal): Boolean; external 'Tests.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
  Send('Tf_MainProg', WM_CLOSE);
end;

end.
Das sind jetzt zwei unterschiedliche DLL's, aber das ist ja wurscht.

Welcher Weg ist denn der bessere?
  Mit Zitat antworten Zitat