Du reservierst ja gar keinen Speicher für "data".
probier mal:
Delphi-Quellcode:
var
data : Ansistring;
// <== geändert !
begin
sDLLPath := ExtractFilePath(Application.ExeName) + '
SoftPlug.dll';
hDLL := LoadLibrary(pChar(sDLLPath));
if hDLL = 0
then begin
// Exceptions sind viel besser als ShowMessage + Exit
raise Exception.Create('
DLL Softplug.dll konnte nicht geladen werden.');
end;
FarProcName := GetProcAddress(hDLL, '
Soft_name');
if Assigned(FarProcName)
then
begin
SetLength(data, 200);
// grosszügig Speicher reservieren
FarProcName(PChar(data), Length(data));
data := PChar(data);
// String verkürzen, bis das erste #0-Zeichen auftaucht
ShowMessage('
data='+data);
// data anzeigen
end
else
raise Exception.Create('
Funktion Soft_name nicht gefunden');