Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Eindeutiger Callback bei mehreren Instanzen des selben Programms

  Alt 27. Okt 2011, 16:52
Die Adresse ist Relativ zum Speicherbereich der Anwendung .... ist auch schnell getestet

Delphi-Quellcode:
library callMe;

uses
  SysUtils,
  Classes,Dialogs;

type
  TCallback=Procedure(I:Integer);
var
 aCallBack:TCallback;
 aNr:Integer;
{$R *.res}
Procedure Init(Callback:TCallback;Nr:Integer);
begin
  aCallBack := Callback;
  Showmessage(IntToStr(Integer(@Callback)));
  aNr := Nr;
  aCallBack(aNr);
end;
exports
Init;
begin

end.

TestUnit zum mehrfachstarten

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TCallback=Procedure(I:Integer);

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

var
  Form1: TForm1;

  Procedure DLLInit(cb:TCallback;Nr:Integer); external 'callme.dllname 'Init';

implementation

{$R *.dfm}

Procedure myCallback(I:Integer);
begin
  Form1.Caption := IntToStr(i);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   DLLInit(@myCallback,StrToInt(Edit1.Text));
end;

end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat