Déterminer la durée en secondes d'un Wave et ENTETE d'un fichier Wave - CORRECTIF

CORRECTIF

La SECTION DATA commence par 'data' (minuscule!) et non par 'DATA' donc le source est :


// Renvoie la durée en secondes du WAV spéc if ié par NF

Function DureeWAV( NF : ShortString ) : Real ;
Var
i : Word ;
F : File Of Char ;
T100 : Array [0..99] of Char ;
OctetsParS, TailleDesDonnees : LongInt ;
j : Integer ;
Begin
// INIT result
RESULT := 0 ;
// Assignation/Ouverture du Fichier (à améliorer en faisant une ouverture
// en lecture seule ...)
AssignFile(F,NF) ;
Reset(F) ;
// Lecture des 100 premiers caractères (dont l'entęte qui var ie de 44 à 58 octets,
// et plus ???)
For I := 0 to 99 Do
Begin
Read(F,T100[I]) ;
End ;
// Copie de "OctetsParS"
Move(T100[28],OctetsParS,4) ;
// Recherche de [TailleData] (TailleDesDonnees)
For I := 10 to 100 Do
Begin
If (T100[I]='d') and
(T100[I+1]='a') and
(T100[I+2]='t') and
(T100[I+3]='a') then
Begin
Move(T100[i+4],TailleDesDonnees,4) ;
Result := tailleDesDonnees / OctetsParS ;
BREAK ;
End ;
End ;
Close(F) ;
End ;
// REMARQUE : il n'est pas impossible que la section 'fmt ' ne soit pas à l'offset prévu.
// Dans ce cas, procédez à une recherche de 'fmt ' comme j'ai fait pour 'data'
// (sans oublier l'espace !!!)
Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour02/06/2003
VisualisationVu 879 fois
PublicInternaute zz
CategorieDelphi - Trucs et astuces - Systeme
Auteur de l'article
SwissDelphiCenter SwissDelphiCenter
connecté le 02/11/2011
329 articles dans la section
Contacter l'auteur