Interface et pointeur nul
Publié : mar. 19/juil./2005 12:47
J'ai failli m'arracher les cheveux en ne comprenant pas le problème... J'ai pu le comprendre avec la version 3.94 qui me sort un
la fonction concernée est tiré de mes fonctions Wave qui sont ici:
http://purebasic.hmt-forum.com/viewtopic.php?t=3123
L'erreur du debugger concerne la ligne
Le problème survient aussi avec la fonction StopWave() et en fait toute fonction qui enchaîne deux appels de méthode. Hors d'une procédure le problème ne survient pas... (problème de pile lié aux appels de méthodes ?)
Dri
(la 3.93 se contentait de planter...)ERROR [invalid memory access]
la fonction concernée est tiré de mes fonctions Wave qui sont ici:
http://purebasic.hmt-forum.com/viewtopic.php?t=3123
Code : Tout sélectionner
Procedure PlayWave(*dsw.DirectSoundWave, Looping.l)
Protected Play.l
If InitWave() And IsWave(*dsw)
If Looping
Looping = #DSBPlay_Looping
EndIf
*dsw\Sound\SetCurrentPosition(0)
*dsw\Sound\Play(0, 0, 0)
Play = #True
EndIf
ProcedureReturn Play
EndProcedure
Si on met la ligne précédente en commentaire le problème ne survient pas. Alors j'ai essayé de mettre en évidence le problème à grand renforts de Debug et finalement le pointeur *dsw prend la valeur 0 apres le SetCurrentPosition()*dsw\Sound\Play(0, 0, 0)
Code : Tout sélectionner
Procedure PlayWave(*dsw.DirectSoundWave, Looping.l)
Protected Play.l
If InitWave() And IsWave(*dsw)
If Looping
Looping = #DSBPlay_Looping
EndIf
Debug *dsw
*dsw\Sound\SetCurrentPosition(0)
Debug *dsw
*dsw\Sound\Play(0, 0, 0)
Play = #True
EndIf
ProcedureReturn Play
EndProcedure
Dri
