Hi,
Ich habe ein kleines Problem hier:
In einer
DLL gibt es diese Funktion:
Code:
procedure Soft_name (data:pchar; size:integer); stdcall ;export;
begin
StrLCopy(data, SoftName, size);
end;
Diese
DLL binde ich nun so ein:
Code:
TPluginName = procedure (data:pchar; size:integer); stdcall;
FarProcName: TPluginName;
In meiner Funktion lade ich nun die
DLL und suche mir die Funktion.
Code:
var
data : PChar;
begin
sDLLPath := ExtractFilePath(Application.ExeName) + 'SoftPlug.dll';
hDLL := LoadLibrary(pChar(sDLLPath));
if hDLL = 0 then begin
ShowMessage('
DLL konnte nicht geladen werden.');
Exit;
end;
try
FarProcName := GetProcAddress(hDLL, 'Soft_name');
if Assigned(FarProcName) then
FarProcName(data,10);
except
ShowMessage('Funktion name der
DLL konnte nicht ausgeführt werden.');
end;
Doch wenn ich durchlaufe scheint es ein Problem mit StrLCopy SoftName->data zu geben.
Wenn ich beim Debuggen in der
DLL den Wert von data ändere (mit dem Debugger-Inspector) kann der SoftName auf data kopiert werden. Dann kommt zumindest keine Fehlermeldung in der EXE. Die Variable data ist jedoch trotzdem leer!?
Hab es einmal mit static laden der
DLL versucht. Da kommt kein Fehler und ich bekomme einen Wert von der
DLL zurück.
Woran kann das liegen?