Bencall
Messages postés14Date d'inscriptionvendredi 5 août 2005StatutMembreDernière intervention 9 septembre 2005
-
29 août 2005 à 14:29
tormino
Messages postés1Date d'inscriptiondimanche 18 septembre 2005StatutMembreDernière intervention18 septembre 2005
-
18 sept. 2005 à 12:54
Bonjour,
Je programme normalement en vb, mais mon probleme est que la seule formule que j'ai trouvé pour mon prog ce trouve en IRC:
S333
Messages postés266Date d'inscriptionvendredi 8 juillet 2005StatutMembreDernière intervention26 juin 2008 29 août 2005 à 17:07
PS(oui de début :D): chez moi $wma.length ne marche pas bien à cause de
$chra qui n'est pas fournit avec la source.Mais je l'ai recrée, et ça marche :)
Alors, dans son code, Hades fait un bread(il lit les bytes du fichier .wma, les 8192 premiers.) et les stock dans &wma.
&wma = 0 45 18 34 etc... (exemple tout à fait faux)
$int($calc($calc($file($1).size / $calc($calc(
$gettok($chra($bvar(&wma,$calc($bfind(&wma,0,107 0 98 0 112 0
115) -9),60)),1,32) -2)/8) /1024 ))) c'est la longueur du wma je suppose.
$int retourne la valeur entière(on va simplifier le code petit à petit)
tout repose sur $bvar(&wma,$calc($bfind(&wma,0,107 0 98 0 112 0
115) -9),60)
On cherche dans &wma, les lettre KBPS(séparé
par le byte 0). La valeur retourné est une position exemple 60,à
laquelle on retire 9. on retourne ensuite la valeur de &wma, de la
position obtenue, jusqu'à 60.
$chra est appliqué à cette suite de nombres. et aura pour rôle de
traduire chaque nombre en son caractère par la commande $chr. Ce qui
donne pour mon test:
128 kbps, 44 kHz, stereo 1-pas
puis on retourne la première chose avant l'espace, soit: 128
auquel on retire 2 -> 126 que l'on divise par 8 -> 15.75
puis l'on divise la taille du fichier en octet, par ce nombre, par 1024
-> 238.820809
On retourne le nombre entier, soit 238 qui est la valeur en seconde du wma.
238secs = 3min 58sec à 1sec près de ce que m'annonce windows :)
voici mon $chra :
alias chra {
var %ca 1,%bidule $1- ,%tt $numtok(%bidule ,32)
while (%ca <= %tt ) {
if ($gettok(%bidule , %ca ,32) = 32) { var %t32 1 | goto inc }
else {
if ($gettok(%bidule , %ca ,32)) {
if (%t32 = 1) {
var %bidule2 = %bidule2 $chr($gettok(%bidule , %ca ,32))
var %t32 0
}
else {
var %bidule2 = %bidule2 $+ $chr($gettok(%bidule , %ca ,32))
}
}
}
:inc
inc %ca
}
return %bidule2
}
Si t'as pas trop compris, dis le, je développerais d'avantage.