Ĺadny brzuch
Witajcie!
Jak pobrać długość pliku oraz aktualny stan odtwarzania? Mam bibliotekę bass. Próbowałem tak:
czas.Caption := format('%s / %s', [IntToStr(BASS_ChannelGetPosition(channel) / (24*3600*1000)), IntToStr(BASS_ChannelGetLength(channel)/ (24*3600*1000))]);
To wstawiłem to timera(Interval 100). Jednak długość pliku oraz czas odtwarzania są za duże i za szybko czas ucieka :( Może zrobiłem błąd ?
Użytkownik Petermechanic edytował ten post 10 sierpień 2006, 19:02
http://4programmers....teka_BASS#VIIIb
var Info: BASS_CHANNELINFO; Czas: Cardinal; begin BASS_ChannelGetInfo(Uchwyt, Info); if Info.ctype and BASS_CTYPE_STREAM = BASS_CTYPE_STREAM then Czas := BASS_StreamGetLength(Uchwyt) else if Info.ctype and BASS_CTYPE_MUSIC_MOD = BASS_CTYPE_MUSIC_MOD then Czas := BASS_MusicGetLength(Uchwyt, True); Czas := Trunc(BASS_ChannelBytes2Seconds(Uchwyt, Czas)); ShowMessage(IntToStr(Czas)); end;
?
bazuje na tym aktykule ale nie o coś takiego mi chodziło :( Mi chodzi o o aby pazywało w formie godzin:minut:sekund a nie samych sekund :(
bazuje na tym aktykule ale nie o coś takiego mi chodziło :( Mi chodzi o o aby pazywało w formie godzin:minut:sekund a nie samych sekund :(
jak masz sekundy to mozesz przeliczyc :>
jak masz sekundy to mozesz przeliczyc :>
Label1.caption:='H:'+IntToStr(Czas div 3600)+' M:'+intToStr(Czas mod 3600)+' S:'+IntToStr((Czas mod 3600) mod 60)
(...)
Uważaj, bo ten kod Ci pójdzie (tj. zostanie poprawnie wykonany) :>
function mytime(sek: integer): string; var h, m, s: integer; hR, mR, sR: string; begin h := sek div (60*60); m := (sek mod (60*60)) div 60; s := (sek mod (60*60)) mod 60; if (h<10) then hR := '0'; hR := hR + IntToStr(h); if (m<10) then mR := '0'; mR := mR + IntToStr(m); if (s<10) then sR := '0'; sR := sR + IntToStr(s); result := hR+':'+mR+':'+sR; end;
Prosta funkcja :)
Dzięki za pomoc ;)
Użytkownik Petermechanic edytował ten post 10 sierpień 2006, 19:01
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Jak pobrać długość pliku oraz aktualny stan odtwarzania? Mam bibliotekę bass. Próbowałem tak:
czas.Caption := format('%s / %s', [IntToStr(BASS_ChannelGetPosition(channel) / (24*3600*1000)), IntToStr(BASS_ChannelGetLength(channel)/ (24*3600*1000))]);
To wstawiłem to timera(Interval 100). Jednak długość pliku oraz czas odtwarzania są za duże i za szybko czas ucieka :( Może zrobiłem błąd ?
Użytkownik Petermechanic edytował ten post 10 sierpień 2006, 19:02
http://4programmers....teka_BASS#VIIIb
var Info: BASS_CHANNELINFO; Czas: Cardinal; begin BASS_ChannelGetInfo(Uchwyt, Info); if Info.ctype and BASS_CTYPE_STREAM = BASS_CTYPE_STREAM then Czas := BASS_StreamGetLength(Uchwyt) else if Info.ctype and BASS_CTYPE_MUSIC_MOD = BASS_CTYPE_MUSIC_MOD then Czas := BASS_MusicGetLength(Uchwyt, True); Czas := Trunc(BASS_ChannelBytes2Seconds(Uchwyt, Czas)); ShowMessage(IntToStr(Czas)); end;
?
bazuje na tym aktykule ale nie o coś takiego mi chodziło :( Mi chodzi o o aby pazywało w formie godzin:minut:sekund a nie samych sekund :(
bazuje na tym aktykule ale nie o coś takiego mi chodziło :( Mi chodzi o o aby pazywało w formie godzin:minut:sekund a nie samych sekund :(
jak masz sekundy to mozesz przeliczyc :>
jak masz sekundy to mozesz przeliczyc :>
Label1.caption:='H:'+IntToStr(Czas div 3600)+' M:'+intToStr(Czas mod 3600)+' S:'+IntToStr((Czas mod 3600) mod 60)
(...)
Uważaj, bo ten kod Ci pójdzie (tj. zostanie poprawnie wykonany) :>
function mytime(sek: integer): string; var h, m, s: integer; hR, mR, sR: string; begin h := sek div (60*60); m := (sek mod (60*60)) div 60; s := (sek mod (60*60)) mod 60; if (h<10) then hR := '0'; hR := hR + IntToStr(h); if (m<10) then mR := '0'; mR := mR + IntToStr(m); if (s<10) then sR := '0'; sR := sR + IntToStr(s); result := hR+':'+mR+':'+sR; end;
Prosta funkcja :)
Dzięki za pomoc ;)
Użytkownik Petermechanic edytował ten post 10 sierpień 2006, 19:01