Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1560 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Trouver un mot ENVIRON vers la fin d'un texte de longueur variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Trouver un mot ENVIRON vers la fin d'un texte de longueur variable

n°231552
Un4GivN
Posté le 20-10-2002 à 23:46:27  profilanswer
 

Je dois créer un lecteur d'ID3 des mp3... les informations concernant le nom du groupe, le genre, blablabla sont situées à la fin de tout ( les dernier 128 bytes )
 
"  If you one sum the the size of all these fields we see that 30+30+30+4+30+1 equals 125 bytes and not 128 bytes. The missing three bytes can be found at the very end of the tag, before the song title. These three bytes are always "TAG" and is the identification that this is indeed a ID3 tag. The easiest way to find a ID3v1/1.1 tag is to look for the word "TAG" 128 bytes from the end of a file.  "
 
Comment feriez-vous pour aller chercher le mot "TAG" directement ?

mood
Publicité
Posté le 20-10-2002 à 23:46:27  profilanswer
 

n°231555
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-10-2002 à 23:51:49  profilanswer
 

tu tapes les 128 derniers octets du fichier dans une structure :
 

Code :
  1. TID3Info = record
  2.     TAG:     array[0..2] of Char;
  3.     Title:   array[0..29] of Char;
  4.     Author:  array[0..29] of Char;
  5.     Album:   array[0..29] of Char;
  6.     Year:    array[0..3] of Char;
  7.     Comment: array[0..29] of Char;
  8.     Genre:   Byte;
  9.   end;


 

Code :
  1. f.Seek(- SizeOf(TID3Info), soFromEnd);
  2.     f.Read(TempRec, SizeOf(TID3Info));


 
Et tu vérifies qu'y a bien 'TAG' dans le champ TAG de la structure.


Message édité par antp le 20-10-2002 à 23:52:31

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°231557
Un4GivN
Posté le 20-10-2002 à 23:52:59  profilanswer
 

mon prob c'est que je sais pas comment accéder Exactement aux derniers 128 octets... :D

n°231558
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-10-2002 à 23:53:41  profilanswer
 

j'ai édité.
suffit de se déplacer à -128 octets de la fin du fichier (très facile avec un TFileStream (j'ai vu que t'utilisais Delphi dans un autre topic, je suppose que c'est pareil ici)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°231559
Un4GivN
Posté le 20-10-2002 à 23:53:50  profilanswer
 

ooooouuhhh ok je vois :)
 
Mais euh en delphi ya FSeek ?

n°231560
Un4GivN
Posté le 20-10-2002 à 23:54:28  profilanswer
 

:eek2:  MERDE ! Toi là... la mémoire c'est pour toi t'es trop fort ! Merci bcppppppp !

n°231561
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-10-2002 à 23:54:35  profilanswer
 

Un4GivN a écrit a écrit :

 
Mais euh en delphi ya FSeek ?




 
non
ici f est un TFileStream
f.Seek -> c'est TFileStream.Seek


Message édité par antp le 20-10-2002 à 23:54:50

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°231572
Un4GivN
Posté le 21-10-2002 à 00:11:20  profilanswer
 

Code :
  1. procedure TForm1.Button2Click(Sender: TObject);
  2. var
  3.    TID3Info = record
  4.    TAG:     array[0..2]  of Char;
  5.    Title:   array[0..29] of Char;
  6.    Author:  array[0..29] of Char;
  7.    Album:   array[0..29] of Char;
  8.    Year:    array[0..3]  of Char;
  9.    Comment: array[0..29] of Char;
  10.    Genre:   Byte;
  11.    end;
  12. f : TFileStream;
  13. Temp : TID3Info;
  14. Info : TID3Info;
  15. begin
  16.    AssignFile(FName, File1.FileName);
  17.    Reset(FName, 1);
  18.    if File1.FileName <> '' then
  19.    begin
  20.       f.Seek(- SizeOf(TID3Info), soFromEnd);
  21.       f.Read(TempRec, SizeOf(TID3Info));
  22.    end;
  23. end.


 
Ça plante à la toute première ligne ... " TID3Info = record "

n°231626
antp
Super Administrateur
Champion des excuses bidons
Posté le 21-10-2002 à 09:42:55  profilanswer
 

:heink: TID3Info c'est la déclaration d'un type de variable, pas d'une variable directement
 
tu dois déclarer ça après la ligne "type" dans la partie "identification" de ta unit.


Message édité par antp le 21-10-2002 à 09:43:30

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°231627
antp
Super Administrateur
Champion des excuses bidons
Posté le 21-10-2002 à 09:45:17  profilanswer
 

et ça:
AssignFile(FName, File1.FileName);
   Reset(FName, 1);
   if File1.FileName <> '' then
     begin
 
je sais pas d'où ça sort :D
 
ça serait plutôt :
 
f := TFileStream.Create(FName, fmOpenRead);
(où FName = le nom du fichier)
 
et pour fermer le fichier:
 
f.Free;


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Trouver un mot ENVIRON vers la fin d'un texte de longueur variable

 

Sujets relatifs
[JAVA] souligner le texte dans un JTextFieldsavoir si une variable est de type entier
probleme avec une variable NULL (en access)cherche petit lien vers doc sur SRVMGRL [ORACLE]
[PHP] Vérifier si un serveur est online + afficher un texte si onlineCommment déclarer une variable utilisable ds tout le projet ???
probleme de changement de type pour une variable [newbies du Python][PHP] Order by une variable ???
[HTML] Solution simple pour faire défiler du texte sur une page 
Plus de sujets relatifs à : Trouver un mot ENVIRON vers la fin d'un texte de longueur variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR