Einzelnen Beitrag anzeigen

Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#1

DLL werte übergabe

  Alt 27. Mai 2006, 18:15
Hi,

ich fast am verzweifeln, ich habe eine DLL Funktion der ein Integer wert übergeben wird bei der DLL kommt aber immer 1243288 an. egal welchen wert am einstzt.

DLL:
Delphi-Quellcode:
...
function init(const ah, fh: integer;const pa:TPointerArray;const sendmsg: Pointer): integer; stdcall;
begin
  showmessage(inttostr(fh)); // immer immer 1243288
  feditor:= Tfeditor.Create(application);
  Windows.SetParent(feditor.Handle, fh); // ungültiges handle da immer 1243288
  feditor.Show;
end;

exports
     init;
...
Programm:
Delphi-Quellcode:
...
type TTaskInit = function (const ah, fh: integer;const pa:TPointerArray;const sendmsg: Pointer): integer;
...
procedure Tfmain.loadtask(name: string);
var
  h: integer;
  ti: TTaskInit;
begin
  // Überprüfen ob task vorhanden ist wenn nicht abbrechen
  if not fileexists(pfad+name+DLLEXT) then begin
    exit;
    showmessage('Task "'+name+'" konnte nicht geladen werden.'+BR+BR+'Datei "'+pfad+name+DLLEXT+'" konnte nicht gefunden werden.');
  end;
  h:= LoadLibrary(pchar(pfad+name+DLLEXT));
  if h<>0 then begin
    @ti := GetProcAddress(h, 'init');
    if @ti <> nil then begin
      showmessage(inttostr(fmain.Handle));// hier ist der wert richtig
      ti(application.Handle, fmain.Handle, [nil], nil);// was läuft da falsch
    end else begin
      showmessage('Task "'+name+'" konnte nicht geladen werden.'+BR+BR+'Function "init" wurde in der DLL nicht gefunden')
    end;
  end else begin
    showmessage('Task "'+name+'" konnte nicht geladen werden.'+BR+BR+'DLL-Handle ist 0');
  end;
  FreeLibrary(h);
end;
...
Leider habe ich keine erklärung für den Fehler ich hoffe ihr könnt mir helfen.

thx, arbu
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat