Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#8

Re: Powerbasic 1 zeilen problem

  Alt 7. Jun 2008, 22:19
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
Miniaturansicht angehängter Grafiken
ss_164.jpg  
  Mit Zitat antworten Zitat