Einzelnen Beitrag anzeigen

Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Einem Callback eine Antwort geben?

  Alt 4. Okt 2003, 11:14
Da DLL und Anwendung im selben Adressraum liegen, sollte das eigentlich gehen:

Delphi-Quellcode:
// Anwendung
type
  TcsCallback = procedure(var AsMessage : PChar);

  procedure CBApp(const ACallbackProc : TcsCallback); external 'callbackdll.dll';

implementation

{$R *.DFM} 

procedure CalledBack(var AsMessage : PChar);
begin
  ShowMessage(AsMessage);
  AsMessage := AsMessage + ' - ' + DateTimetoStr(now);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  CBApp(CalledBack);
end;
Delphi-Quellcode:
// DLL
type
  TcsCallBack = procedure(var AsMessage : PChar);

procedure CBApp(const ApCallback : TcsCallback);
var
  AsMessage: PChar;
begin
  AsMessage := 'TEST';
  ApCallback(AsMessage); //jetzt wird der Wert in der Funktion verändert
  ShowMessage(AsMessage); //kann jetzt <> 'TEST' sein
end;

exports CBApp;
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat