Bonjour,
J'avais ce code : http://jovalise.net/sources/alchem [...] oducer.adb
Pour corriger mon problème j'ai délcaré un nouveau type Extended_Step_Index_Type dérivé de Step_Index_Type comprenant zéro, et j'ai modifier l'ago comme suit : http://jovalise.net/sources/alchem [...] ducer2.adb
Je voudrais savoir si il n'y aurait pas une solution pour m'éviter de déclarer ce nouveau type.
Les problème sous jacent de la première version sont, selon l'ordre d'exécution testé, une incrémentation de "part" avant la fin ou au début de celle-ci.
Donc, soit il manque la ou les première notes, soit il manque les dernière.
Les soures complète : ici
Je vous met un peut de code pour faire joli.
Previsious code :
Code :
-- or delay until Start_Time; Start_Time := Start_Time + Quantum; Clear(The_Vector); The_Vector := Step_Of(Parts(The_Part).all, Current_Step); Sheduler_Process.Receive(The_Vector, Current_step); if Current_Step + 1 > Step_Index_Type'Last then Current_Step := 1; else Current_Step := Current_Step + 1; end if; if (Current_Step mod 32) = 0 then The_Part := Wrap_Succ(The_Part); end if; end select;
|
Current code :
Code :
-- or delay until Start_Time; Start_Time := Start_Time + Quantum; Clear(The_Vector); Current_Step := Current_Step + 1; if (Current_Step mod 32) = 0 then The_Part := Wrap_Succ(The_Part); end if; The_Vector := Step_Of(Parts(The_Part).all, Current_Step); Sheduler_Process.Receive(The_Vector, Current_step); if Current_Step + 1 > Step_Index_Type'Last then Current_Step := 0; end if; end select;
|
Si vous avez du temps, s'il vous plaît ! Merci.