Jo so habe ich es gemacht
TBbpPluginFunc = function (var bbp: TBbpPluginRec): Integer;
andere namen aber egal...
Der unterschied bei mir kein "var" vor bbp(deshalb keine rückgabe) und ein angehängtes stdcall
TBbpPluginFunc = function (var bbp: TBbpPluginRec): Integer; stdcall;
ohne stdcall bekomme ich ein BBP_ERROR = -1;
mit bekomme ich als rückgabe BBP_SUCCESS = 0;
sobald aber BBP_Plugin verlassen wird kracht es muss noch nachsehn warum
EDIT:
Sieht danach aus das der im record definierte
Titel und Author das problem verursacht
ursprünglich definiert
Delphi-Quellcode:
Title AS ASCIIZ * 32 '// Plugin's name or title.
Author AS ASCIIZ * 64 '// Plugin's author name.
habe an stelle dessen string[32] genommen dann kracht es
nehme ich PChar dann läuft es durch der text ist dann aber "nil" steht nix drin.
Muss noch schaun was ich bei den nullterminierten ASCIIZ in Delphi nehmen kann
EDIT2:
verbunden bin ich jetzt aber die strings machen immer noch probleme
weiss nicht was ich da nehmen soll.
aktuelle abfrage
Delphi-Quellcode:
function BASS_BASSBOXVIS_GetName(
handle: HVIS): PChar;
stdcall;
var
nRet : Integer;
begin
Result :=
nil;
// Initialize BassBoxInfo
BassBoxInfo := PBbpPluginRec(
handle);
// check is valid handle
if (
not BB_ValidHandle(
handle))
then
begin
BassFuncs^.SetError(BASS_ERROR_HANDLE);
Exit;
end;
// send BBP_CREATE Retrieve Title, Name, Version, Render mode.
BassBoxInfo.Msg := BBP_CREATE;
nRet := BBP_Plugin(BassBoxInfo^);
if nRet = BBP_ERROR
then
begin
FreeLibrary(
handle);
FreeMem(BassBoxInfo);
BassFuncs^.SetError(BASS_ERROR_START);
Exit;
end else
BassFuncs^.SetError(BASS_OK);
Result := PChar(Length(BassBoxInfo^.Title));
end;
Siehe Pic ..
gruss Emil