Bonsoir

Je suis nouveau et j'aurai besoin d'un coups de main à propos d'un petit problème avec fmodex et un composant que je construis.

Je vous explique le tout. Je développe une application et il y a beaucoup de code un peu partout. J'ai décidé de construire un composant pour fmod pour réduire mes pertes de temps.

J'ai un problème avec les callbacks de fmodex.

J'ai une classe défini comme ceci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
type
 
TOnEnd = procedure(Sender:TObject) of Object;
 
TFmodPlayer = class (TComponent)
private
FOnEnd:TOnEnd;
published
property OnEnd:TOnEnd read FOnEnd write FOnEnd;
end;
 
 
implementation
 
function OnChannelCallBack(channel: Pointer; callbacktype: FMOD_CHANNEL_CALLBACKTYPE; commanddata1: Word; commanddata2: Word):FMOD_RESULT;stdcall;
begin
  case callbacktype of
  FMOD_CHANNEL_CALLBACKTYPE_END:showmessage('');
  end;
  Result:=FMOD_OK;
end;
 
procedure TFmodPlayer.Play;
begin
FRESULT:=Fmod_System_CreateStream(FSYSTEM,PAnsiChar(FFile),FMOD_UNICODE,NIL,FSOUND);
ON_FMOD_ERROR(FRESULT);
FRESULT:=Fmod_System_PlaySound(FSYSTEM,FMOD_CHANNEL_FREE,FSOUND,false,FCHANNEL);
ON_FMOD_ERROR(FRESULT);
FRESULT:=FMOD_Channel_SetCallback(FCHANNEL,OnChannelCallBack);
ON_FMOD_ERROR(FRESULT);
end;
Je vous explique le problème maintenant. Le callback fonctionne mais j'aurai aimé remplacé le showmessage('') par ce qu'il y a dans l'évènement OnEnd.
J'ai alors voulu placer la procédure OnChannelCallBack dans ma classe mais j'obtiens le message d'erreur suivant :

Types incompatibles : 'procédure normale et pointeur de méthode'

Je voudrai remplacer :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
FMOD_CHANNEL_CALLBACKTYPE_END:showmessage('');
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
FMOD_CHANNEL_CALLBACKTYPE_END:if assigned(FOnEnd) then FOnEnd(Self);
J'espère qu'on pourra m'aider
Merci

NB: désolé si je me suis gourré dans l'endroit ou je post