Hallo,
Ik ben in CSharp met muziek bezig en daarvan wil ik de speeltijd aftellen. Ik krijg een aantal seconden, die ik naar een correcte tijd string wil zetten. Bijvoorbeeld, 320 seconden is dan iets van 00:05:20
Dat is verder ook geen probleem, maar bij het aftellen gaat het fout. De code die ik gebruikte heb ik even iets uit elkaar getrokken om het duidelijker te weergeven, maar ziet er dus zo uit:
// Bass is de module waar ik gebruik van maak en hiermee zet ik de lengte van het nummer in bytes om naar seconden.
float lengte = (long)Bass.BASS_ChannelBytes2Seconds(handle, (long)Bass.BASS_StreamGetLength(handle));
// Hier zet ik de bytes van de positie om in seconden.
float positie = (long)Bass.BASS_ChannelBytes2Seconds(handle, Bass.BASS_ChannelGetPosition(handle));
// Hier bereken hoeveel seconden er nog over zijn.
int countdown = (int)lengte - (int)positie;
mijn probleem is nu, hoe zet ik dit om naar een tijdstring, ik gebruikte dit:
float hour = (countdown / 3600) % 24;
float sec = countdown % 60;
float min = (countdown / 60) % 60;
En dan met string.Format() omzetten naar een goede tijdstring.
Dit werkte niet, want zodra ie af begon te tellen ging ie van 00:05:00 naar 00:05:59 in plaats van 00:04:59.
Iemand een idee hoe ik dit anders kan doen? Ik denk dat er ergens iets misgaat met de afronding, maar daar ben ik niet zeker van.
Ik ben in CSharp met muziek bezig en daarvan wil ik de speeltijd aftellen. Ik krijg een aantal seconden, die ik naar een correcte tijd string wil zetten. Bijvoorbeeld, 320 seconden is dan iets van 00:05:20
Dat is verder ook geen probleem, maar bij het aftellen gaat het fout. De code die ik gebruikte heb ik even iets uit elkaar getrokken om het duidelijker te weergeven, maar ziet er dus zo uit:
// Bass is de module waar ik gebruik van maak en hiermee zet ik de lengte van het nummer in bytes om naar seconden.
float lengte = (long)Bass.BASS_ChannelBytes2Seconds(handle, (long)Bass.BASS_StreamGetLength(handle));
// Hier zet ik de bytes van de positie om in seconden.
float positie = (long)Bass.BASS_ChannelBytes2Seconds(handle, Bass.BASS_ChannelGetPosition(handle));
// Hier bereken hoeveel seconden er nog over zijn.
int countdown = (int)lengte - (int)positie;
mijn probleem is nu, hoe zet ik dit om naar een tijdstring, ik gebruikte dit:
float hour = (countdown / 3600) % 24;
float sec = countdown % 60;
float min = (countdown / 60) % 60;
En dan met string.Format() omzetten naar een goede tijdstring.
Dit werkte niet, want zodra ie af begon te tellen ging ie van 00:05:00 naar 00:05:59 in plaats van 00:04:59.
Iemand een idee hoe ik dit anders kan doen? Ik denk dat er ergens iets misgaat met de afronding, maar daar ben ik niet zeker van.