Hellow, je suis en train de coder un jeu avec la SDL (jedi-SDL) et je voudrais créer un timer qui appelle une fonction d'affichage toutes les 30 ms. J'arrive à lancer un timer lorsque je n'ai aucun paramètre à donner à ma fonction de callback, mais lorsque je veux en mettre, le compilateur m'indique des erreurs que je n'arrive pas à corriger.

La doc de la fonction SDL_AddTimer : http://jedi-sdl.pascalgamedevelopmen...laddtimer.html

Mon code :
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
type timerParam = ^TtimerParam;
 
TtimerParam = record
           scr : PSDL_Surface;
           imgFond : PSDL_Surface;
end; 
 
function actualise(intervalle : UInt32; param : pointer) : UInt32;
begin
	SDL_BlitSurface(param^.imgFond, NIL, param^.scr, NIL);
	SDL_Flip(param^.scr);
	result := intervalle;
end;
 
procedure cgraphiques.activeTimer();
var par : timerParam;
begin
        par^.scr := scr; // Attribut de la classe cgaphiques
        par^.imgFond := imgFond; // Idem
	timerId := SDL_AddTimer(FPS, @actualise, par);
end;
En gros ce code permet de réafficher l'image de fond toutes les 30 ms (ce n'est qu'un début : plus tard, la fonction affichera tous les graphismes du jeu).

L'erreur que me retourne Lazarus : Illegal qualifier sur la ligne SDL_BlitSurface(param^.imgFond, NIL, param^.scr, NIL); : apparemment, c'est le param^.imgFond que j'utilise mal...

Merci d'avance !