Thema: Delphi Dll: Funktionen erkennen

Einzelnen Beitrag anzeigen

Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#18

Re: Dll: Funktionen erkennen

  Alt 15. Dez 2007, 20:18
Argh Leute ich pack das net...

also meine dll sieht bis jetzt so aus:

Delphi-Quellcode:
library DateAndTime;

uses
  SysUtils,
  Classes;

type
  DllArrayOfString = array of string;

function YourTime: string; stdcall;
begin
  result := TimeToStr(Now);
end;

function dllinfo: DllArrayOfString; stdcall;
var
  List: DllArrayOfString;
begin
  //Rückgabe des Arrays
  List[0] := 'YourTime';


  //Rückgabe
  result := List;
end;

exports
  dllinfo,YourTime;

{$R *.res}

begin
end.
und die Procedure die die Dll laden soll so:

Delphi-Quellcode:
type
  //Tüpen
  DllFunktionParamList = array of string;
  DllFunktionResult = string;
  DllFunktionList = TStringList;

  //FunktionsTyp
  DllFunktion = function(Param:DllFunktionParamList):DllFunktionResult;
  DllListFunktion = function(): DllFunktionParamList;

procedure LoadDll(DllPath: string);
var
  DllHandle: THandle;
  ListFunktion: DllListFunktion;
  List: DllFunktionParamList;
  I : integer;
begin
  try
    //Dll laden
    DllHandle := LoadLibrary(PChar(DllPath));

    if DllHandle <> 0 then begin

      //Listenfunktion einlesen
      ListFunktion := GetProcAddress(DllHandle,PChar('dllinfo'));

      if ListFunktion <> nil then begin


        //Liste laden
        List := ListFunktion();

        //Schleife, um alle Funktionen zu speichern
        for I := 0 to High(List) do begin
          //Wert speichern
          DllList.Values[List[I]] := DllPath;

        end;
      end;
    end;
  except
    //Fehler
    ShowMsg('Konnte die Dll "' + DllPath + '" nicht finden/laden',Error);
  end;
end;
Ich erhalte beim afruf List := ListFunktion(); einen Fehler, bzw. machnmal kommt er garnicht über das if ListFunktion <> nil then ...


wo ist mein fehler?
Lars
  Mit Zitat antworten Zitat