[gelöst:]BASS_ChannelSetSync im fpc-Mode

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...

[gelöst:]BASS_ChannelSetSync im fpc-Mode

Beitragvon lazarusjulian » 12. Apr 2016, 07:32 [gelöst:]BASS_ChannelSetSync im fpc-Mode

Hallo,

ich möchte folgenden Befehl, welcher mit der Delphi Version der Bass.dll funktioniert
Code: Alles auswählen
 lsync := BASS_ChannelSetSync(chan,BASS_SYNC_POS or BASS_SYNC_MIXTIME,FSelEnd,LoopSyncProc,0); 


..und in der Bass.dll folgendermaßen deklariert ist:
Code: Alles auswählen
  function BASS_ChannelSetSync(handle: DWORD; stype: DWORD; param: QWORD; proc: SYNCPROC; user: DWORD): HSYNC; stdcall; external bassdll;  



nun in der Lazarus-Version (lazdynamic_bass) der Bass.dll benutzen.
Dort ist der Befehl folgendermaßen deklariert:
Code: Alles auswählen
 var BASS_ChannelSetSync:function(handle: DWORD; type_: DWORD; param: QWORD; proc: SYNCPROC; user: Pointer): HSYNC; {$IFDEF WIN32}stdcall{$ELSE}cdecl{$ENDIF};  


Code: Alles auswählen
 lsync := BASS_ChannelSetSync(chan,BASS_SYNC_POS or BASS_SYNC_MIXTIME,FSelEnd,LoopSyncProc,nil); //so geht es nicht, Fehlermeldung: 
unit1.pas(295,80) Error: Wrong number of parameters specified for call to "LoopSyncProc"



Code: Alles auswählen
 lsync := BASS_ChannelSetSync(chan,BASS_SYNC_POS or BASS_SYNC_MIXTIME,FSelEnd,@LoopSyncProc,nil); //so auch nicht, Fehlermeldung:
unit1.pas(296,93) Error: Incompatible types: got "<address of procedure(LongWord,LongWord,LongWord,LongWord);StdCall>" expected "<procedure variable type of procedure(LongWord,LongWord,LongWord,Pointer);StdCall>"



Kann bitte Jemand helfen :?:

Liebe Grüße
Zuletzt geändert von lazarusjulian am 12. Apr 2016, 08:40, insgesamt 1-mal geändert.
lazarusjulian
 
Beiträge: 24
Registriert: 6. Jan 2016, 21:45

Beitragvon lazarusjulian » 12. Apr 2016, 08:38 Re: BASS_ChannelSetSync im fpc-Mode

Habs hinbekommen.

das Problem war, dass ich die Deklaration der LoopSyncProc in meiner eigenen Unit1 nicht angepasst hatte.


alt und falsch:
Code: Alles auswählen
 procedure LoopSyncProc(handle: HSYNC; channel, data,user :DWORD); stdcall;      


neu und richtig :
Code: Alles auswählen
  procedure LoopSyncProc(handle: HSYNC; channel, data:DWORD; user:pointer); stdcall; 
lazarusjulian
 
Beiträge: 24
Registriert: 6. Jan 2016, 21:45

• Themenende •

Zurück zu Multimedia



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried