Titre
Lire et ecrire les Tag MP3
Auteur
Source

Voici une unité pour lire et ecire les TAG MP3
 dans le zip il y a un exemple d'utilisation:


unit TagMp3_unit;

{ TagMP3  v 1.0 par DelphiCool
        09/03/2002
      www.ProgZed.com
}


interface
 uses
  SysUtils, Classes ;

  Type
   TagMP3 = record
     Titre : String[30];
     Artiste : String[30];
     Album : String[30];
     Annee : String[4];
     Commentaire : String[30];
     Genre : Byte;
  end;


  Function Lire_Tag(Fichier :string): TagMP3;
  Procedure Ecrire_Tag(Fichier :string; VotreTag : TagMP3);

implementation


{-=-=-=-=-=-= LECTURE DU TAG =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
Function Lire_Tag(Fichier :string): TagMP3;
 var Fs : TFileStream;
     Tag : Array[1..128] of Char;
     i :integer;
     s :string;
     T : TagMP3;
  begin
    Fs := TFileStream.Create(Fichier,fmOpenRead);
     i := Fs.Size -128;
     Fs.Seek( i,soFromBeginning);
     Fs.Read(Tag,128);
    Fs.Free;

   s := Copy(Tag,1,3);
     if s <> 'TAG' then ErangeError.Create('Il n''y as pas de Tag actuellement');
    

{ titre }       T.Titre := Copy(Tag,4,33);

{ Artiste }     T.Artiste := Copy(Tag,34,63);

{ Album }       T.Album := Copy(Tag,64,93);

{ Année }       T.Annee := Copy(Tag,94,97);

{ Commentaire } T.Commentaire := Copy(Tag,98,127);

{ Genre }       T.Genre := Ord(Tag[128]);

     Result := T;
  end;

{-=-=-=-=-=-= LECTURE DU TAG =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
Procedure Ecrire_Tag(Fichier :string; VotreTag : TagMP3);
const TypeTag : array[1..3] of Byte = ($54,$41,$47);
 var Fs : TFileStream;
     i, j :integer;
     b : byte;
  begin
   j := 1;
    Fs := TFileStream.Create(Fichier,fmOpenWrite);
{ on se positionne au bon endroit }
     i := Fs.Size -128;
     Fs.Seek( i,soFromBeginning);
{ on ecrit TAG }     
     Fs.Write(TypeTag,3);

{ TiTre }
   For i := 1 to Length(VotreTag.Titre) do
     begin
      b := Ord(VotreTag.Titre[i]);
      Fs.Write(b,1);
      j := i;
     end;
      b := 0;    for i := j to 29 do  Fs.Write(b,1);

{ Artiste }
   For i := 1 to Length(VotreTag.Artiste) do
     begin
      b := Ord(VotreTag.Artiste[i]);
      Fs.Write(b,1);
      j := i;
     end;
      b := 0;    for i := j to 29 do  Fs.Write(b,1);

{ Album }
   For i := 1 to Length(VotreTag.Album) do
     begin
      b := Ord(VotreTag.Album[i]);
      Fs.Write(b,1);
      j := i;
     end;
      b := 0;    for i := j to 29 do  Fs.Write(b,1);

{ Année }
   For i := 1 to Length(VotreTag.Annee) do
     begin
      b := Ord(VotreTag.Annee[i]);
      Fs.Write(b,1);
      j := i;
     end;
      b := 0;    for i := j to 3 do  Fs.Write(b,1);

{ Commentaire }
   For i := 1 to Length(VotreTag.Commentaire) do
     begin
      b := Ord(VotreTag.Commentaire[i]);
      Fs.Write(b,1);
      j := i;
     end;
      b := 0;    for i := j to 29 do  Fs.Write(b,1);

{ Genre }
      b := VotreTag.Genre;
      Fs.Write(b,1);

   Fs.Free;
  end;
  {-=-=-=-=-=-=  =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
end.



Site de l'auteur