Einzelnen Beitrag anzeigen

Xate

Registriert seit: 11. Jun 2010
12 Beiträge
 
Delphi 2005 Architect
 
#1

Ereigniss in DLL zuweisen

  Alt 30. Jan 2012, 15:19
Hallo,

ich versuche gerade zwei Events einem Object zuzuweisen. Mein Quellcode sieht so aus:
Delphi-Quellcode:
[B]library[/B] report2010;

{ 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
  SysUtils, Classes, Windows, Dialogs,
  qrddlgs, dbxquery, CRSQLConnection,
  QrPrntr, printers, DB, DBTables,
  DBClient, Forms, Qrdctrls, QrDesign,
  dll_database, DBCtrls, ExtCtrls,
  QRExport, QRPDFFilt, QRWebFilt,
  ShellAPI;




{$R *.res}

type
  TDataModule1 = class(TDataModule)
  end;


var
  ReportDesignerDialog1 : TReportDesignerDialog;
  index_d : WideString;
  filter_d, dir_d, sql_d : WideString;
  Benutzer_after, Druckname_after : WideString;
  kopie : integer;
  AExportFilter : TQRRTFExportFilter;
  pdfFilter : TQRPDFDocumentFilter;
  htmlFilter : TQRGHTMLDocumentFilter;
  db : Tdll_datamodule;
  query : TDBXQuery;
  laufwerk, lwtemp : String;
Weiter unten habe ich drei Prozeduren, wovon die untere extern angesprochen werden kann.
( den Part von begin bis end hab ich rausgelassen)
Delphi-Quellcode:
procedure BeforeOpenDataset(DS: TDataSet);
procedure ReportDesignerDialog1AfterReportLoaded(Form: TForm; QRD: TComponent);
procedure RX1(ReportName,Art,Filter,dir,sql,index:WideString;
              DF:Boolean;
              anz_d : Integer;
              intern : Boolean;
              Dokuname,kundennr,benutzer : WideString); stdcall;
Nun will ich in der RX1 Prozedur folgendes tun:
Delphi-Quellcode:
  // Reportdesigner erzeugen und Ereignisse zuweisen
  reportdesignerdialog1 := Treportdesignerdialog.Create(nil);
  ReportDesignerDialog1.BeforeOpenDataset := BeforeOpenDataset;
  ReportDesignerDialog1.AfterReportLoaded := ReportDesignerDialog1AfterReportLoaded;
Leider bekomme ich dort diese Fehlermeldungen:
Code:
[Fehler] report2010.dpr(209): E2009 Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'
[Fehler] report2010.dpr(210): E2009 Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'
Setzte ich ein @ vor das ganze, erhalte ich folgende Meldungen:
Code:
[Fehler] report2010.dpr(209): E2010 Inkompatible Typen: 'TDataSetNotifyEvent' und 'Pointer'
[Fehler] report2010.dpr(210): E2010 Inkompatible Typen: 'TQRDAfterReportLoadedEvent' und 'Pointer'
Kann mir da jemand weiterhelfen?
  Mit Zitat antworten Zitat