Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Получаем ID3Tag v1


{ 
  Byte 1-3 = ID 'TAG' 
  Byte 4-33 = Titel / Title 
  Byte 34-63 = Artist 
  Byte 64-93 = Album 
  Byte 94-97 = Jahr / Year 
  Byte 98-127 = Kommentar / Comment 
  Byte 128 = Genre 
} 


type 
  TID3Tag = record 
    ID: string[3]; 
    Titel: string[30]; 
    Artist: string[30]; 
    Album: string[30]; 
    Year: string[4]; 
    Comment: string[30]; 
    Genre: Byte; 
  end; 

const 
 Genres : array[0..146] of string = 
    ('Blues','Classic Rock','Country','Dance','Disco','Funk','Grunge', 
    'Hip- Hop','Jazz','Metal','New Age','Oldies','Other','Pop','R&B', 
    'Rap','Reggae','Rock','Techno','Industrial','Alternative','Ska', 
    'Death Metal','Pranks','Soundtrack','Euro-Techno','Ambient', 
    'Trip-Hop','Vocal','Jazz+Funk','Fusion','Trance','Classical', 
    'Instrumental','Acid','House','Game','Sound Clip','Gospel','Noise', 
    'Alternative Rock','Bass','Punk','Space','Meditative','Instrumental Pop', 
    'Instrumental Rock','Ethnic','Gothic','Darkwave','Techno-Industrial','Electronic', 
    'Pop-Folk','Eurodance','Dream','Southern Rock','Comedy','Cult','Gangsta', 
    'Top 40','Christian Rap','Pop/Funk','Jungle','Native US','Cabaret','New Wave', 
    'Psychadelic','Rave','Showtunes','Trailer','Lo-Fi','Tribal','Acid Punk', 
    'Acid Jazz','Polka','Retro','Musical','Rock & Roll','Hard Rock','Folk', 
    'Folk-Rock','National Folk','Swing','Fast Fusion','Bebob','Latin','Revival', 
    'Celtic','Bluegrass','Avantgarde','Gothic Rock','Progressive Rock', 
    'Psychedelic Rock','Symphonic Rock','Slow Rock','Big Band','Chorus', 
    'Easy Listening','Acoustic','Humour','Speech','Chanson','Opera', 
    'Chamber Music','Sonata','Symphony','Booty Bass','Primus','Porn Groove', 
    'Satire','Slow Jam','Club','Tango','Samba','Folklore','Ballad', 
    'Power Ballad','Rhytmic Soul','Freestyle','Duet','Punk Rock','Drum Solo', 
    'Acapella','Euro-House','Dance Hall','Goa','Drum & Bass','Club-House', 
    'Hardcore','Terror','Indie','BritPop','Negerpunk','Polsk Punk','Beat', 
    'Christian Gangsta','Heavy Metal','Black Metal','Crossover','Contemporary C', 
    'Christian Rock','Merengue','Salsa','Thrash Metal','Anime','JPop','SynthPop'); 


var 
  Form1: TForm1; 

implementation 

{$R *.dfm} 

function readID3Tag(FileName: string): TID3Tag; 
var 
  FS: TFileStream; 
  Buffer: array [1..128] of Char; 
begin 
  FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); 
  try 
    FS.Seek(-128, soFromEnd); 
    FS.Read(Buffer, 128); 
    with Result do 
    begin 
      ID      := Copy(Buffer, 1, 3); 
      Titel   := Copy(Buffer, 4, 30); 
      Artist  := Copy(Buffer, 34, 30); 
      Album   := Copy(Buffer, 64, 30); 
      Year    := Copy(Buffer, 94, 4); 
      Comment := Copy(Buffer, 98, 30); 
      Genre   := Ord(Buffer[128]); 
    end; 
  finally 
    FS.Free; 
  end; 
end; 

procedure TfrmMain.Button1Click(Sender: TObject); 
begin 
  if OpenDialog1.Execute then 
  begin 
    with readID3Tag(OpenDialog1.FileName) do 
    begin 
      LlbID.Caption := 'ID: ' + ID; 
      LlbTitel.Caption := 'Titel: ' + Titel; 
      LlbArtist.Caption := 'Artist: ' + Artist; 
      LlbAlbum.Caption := 'Album: ' + Album; 
      LlbYear.Caption := 'Year: ' + Year; 
      LlbComment.Caption := 'Comment: ' + Comment; 
      if (Genre >= 0) and (Genre <=146) then 
       LlbGenre.Caption := 'Genre: ' + Genres[Genre] 
      else 
       LlbGenre.Caption := 'N/A'; 
    end; 
  end; 
end;

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay