Einzelnen Beitrag anzeigen

Dr.No

Registriert seit: 18. Mär 2005
38 Beiträge
 
#1

dll: procedure zur laufzeit einbinden

  Alt 24. Mär 2006, 15:21
Also entweder bin ich doof oder, des stimmt einfach net:
Ich hab da schon in den tut nachgeschaut mit dan dlls, da steht ja drinn wie ich dlls zur laufzeit einbinde, aber bei mir tut des net!

bei den siht des so aus:

Delphi-Quellcode:
 
unit Unit1;

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:=LoadLibrary(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;
    FreeLibrary(Handle);
  end;
end;

end.
also des tat schonmal bei mir nich,
und wie soll des bei proceduren ausschauen?
wenn ich des am anfang lad tut bei mir die dll aber so halt net, und es isch dringend erforderlich das des dynamisch geladen wird!

also bei mir siht das so aus:
Delphi-Quellcode:
type
  Tinitform = function(owns:tcomponent;a:TwinControl):boolean; stdcall;
  function addieren(owns:tcomponent;a:TwinControl):boolean;

...

implementation

...
function addieren(owns:tcomponent;a:TwinControl):boolean;
var initform: Tinitform;
    Handle1: THandle;
begin
  Handle1:=LoadLibrary(PChar('./dlls\formcreate.dll'));
  if Handle1 <> 0 then begin
    @initform := GetProcAddress(Handle1, 'initform');
    if @initform <> nil then begin
    showmessage('c');
      result:=initform(owns,a);
    end;
    FreeLibrary(Handle1);
  end;
end;
wo bei die dll soaus siht:

Delphi-Quellcode:


...

var myform1:tform1;

function Initform(owns:tcomponent;a:TwinControl):boolean; stdcall;
begin

form1:=tform1.Create(application);
form1.Visible:=true;

result:=true;

end;

exports
  initform;

begin
end.

also ich bin da echt zu blöd des selbst hin zu bekommen,
wie gesgt wenn ihs am anfang ein binde tuts!
  Mit Zitat antworten Zitat