So ich habe folgendes Problem:
Ich schreibe ein Programm das "Plugins" in form von libarys nutzt, wenn eine solche libary geladen wird (durch auswahl in einer liste), so wird in der
DLL die function GetDllInfo aufgerufen um die funktionen der
DLL zu erhalten.
Wenn ich dies nun tue mit folgendem Code:
Delphi-Quellcode:
procedure TForm1.cbgroupChange(Sender: TObject);
type TDllFunc = function(): string;
var
i: integer;
s: string;
DLLHandle: THandle;
func: TDllFunc;
t: PChar;
begin
cbcommand.Clear;
DLLHandle := LoadLibrary(PChar('Plugins\' + cbgroup.text + '.dll'));
if DLLHandle >= 32 then
begin
@func := GetProcAddress(DLLHandle, 'DLLGetInfo');
if Assigned(func) then s := func();
end;
ShowMessage(s);
FreeLibrary(DLLHandle);
end;
(Das ShowMessage ist zu testzwecken da)
Dann wird das was kommen soll per Showmessage richtig ausgegeben, dannach erhalte ich aber einen Error:
INVALID POINTER OPERATION und der fehler wird an der stelle FreeLibrary(DLLHandle); angezeigt...wenn ich nun aber nichts in der liste wähle (also KEINE
dll wird geladen) so bekomme ich beim beenden des programmes den selben error....woran kann das nun liegen??
ICH BEDANKE MICH IM VORRAUS FÜR ALLE ANREGUNGEN UND FÜR JEDE HILFE
MfG Hybrid666