AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Definition DLLProc-Variable in Delphi7
Thema durchsuchen
Ansicht
Themen-Optionen

Definition DLLProc-Variable in Delphi7

Ein Thema von bubuu · begonnen am 1. Jun 2010 · letzter Beitrag vom 2. Apr 2013
 
bubuu

Registriert seit: 1. Jun 2010
Ort: Stäfa
6 Beiträge
 
Delphi 7 Professional
 
#1

Definition DLLProc-Variable in Delphi7

  Alt 1. Jun 2010, 16:34
Hallo,
Ich habe zig Foren etc. durchpflügt und meinte begriffen zu haben, wie man ein DLL mit Hilfe einer call-back Funktion initialisieren kann. Mein Dll - etwas abgekürzt - sieht so aus:
Delphi-Quellcode:
library Rpc_2;


uses
  System, SysUtils, Classes, Windows,
  AT91def in 'AT91def.pas',
  RPC in 'RPC.pas',
  Link in 'Link.pas{CIF};

{$R *.res}
var
  DLLProcNext: procedure(Reason: Integer); stdcall = nil;
  DLLProc: TDLLProc;

// exported functions ==========================================================

  function WhoAmI(var v: Cardinal; var s: PChar): EStatus; stdcall; export;
  var str: string;
  begin
    Result := Remote.WhoAmI(v, str);
    s := PChar(str);
  end;

  function SetROMP(irom: TIROM): EStatus; stdcall; export;
  begin
    Result := Remote.SetROMP(irom);
  end;

  function GetROMP( var irom: TIROM; var romstatus: Cardinal ): EStatus; stdcall; export;
  begin
    Result := Remote.GetROMP(irom, romstatus);
  end;


exports
  WhoAmI, SetROMP, GetROMP;

// initialisation routine called by system =====================================

  procedure IniRpc(Reason: Integer); stdcall;
  begin
    case Reason of
      DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hInstance);
      DLL_THREAD_ATTACH:
      ;
      DLL_THREAD_DETACH:
      ;
      DLL_PROCESS_DETACH:
      ;
    end;
    if Assigned(DLLProcNext) then DLLProcNext(Reason);
  end;

begin
    DLLProcNext := Pointer(InterlockedExchange(Integer(DLLProc), Integer(@IniRpc)));
    IniRpc(DLL_PROCESS_ATTACH);
end.
Wenn ich das compiliere, so kriege ich Fehler wegen des Typs TDLLProc. Ersetze ich diesen Typ durch Pointer, so kommt der Fehler, weil die Systemvariable DLLProc Delphi 7 nicht bekannt ist.
Frage 1: Wo sind TDLLProc und DLLProc definiert und wie komm ich da ran?

Die Variable CIF, definiert in der Unit Link.pas müsste initialisiert werden. Das würde man wohl nach dem Aufruf von disableThreadLibraryCalls-Aufruf in IniRpc machen - aber
Frage 2:Wie das? Bei einer Application sieht das ja so aus:
  Application.CreateForm(TCIF, CIF); und in einer DLL?
Mit Dank und Gruss bubuu
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz