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

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

Marsh Posté le 20-10-2002 à 23:46:27    

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 ?

Reply

Marsh Posté le 20-10-2002 à 23:46:27   

Reply

Marsh Posté le 20-10-2002 à 23:51:49    

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
Reply

Marsh Posté le 20-10-2002 à 23:52:59    

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

Reply

Marsh Posté le 20-10-2002 à 23:53:41    

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
Reply

Marsh Posté le 20-10-2002 à 23:53:50    

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

Reply

Marsh Posté le 20-10-2002 à 23:54:28    

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

Reply

Marsh Posté le 20-10-2002 à 23:54:35    

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
Reply

Marsh Posté le 21-10-2002 à 00:11:20    

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 "

Reply

Marsh Posté le 21-10-2002 à 09:42:55    

: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
Reply

Marsh Posté le 21-10-2002 à 09:45:17    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed