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?