Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Problem beim id3-Tag auslesen (https://www.delphipraxis.net/19638-problem-beim-id3-tag-auslesen.html)

Schneider-Huetter 6. Apr 2004 12:49


Problem beim id3-Tag auslesen
 
Hallo zusammen, ich habe ein kleines Problem beim Auslesen des id3-Tags.
Es soll nur der Interpret und der Titel ausgelesen, hier mal ein Code-Schnippsel:

Code:

Function Tid3Tag.Interpret_Titel(Datei: String) : String;
 begin
  Try
   FileStream := TFileStream.Create(Datei, fmOpenRead or fmShareDenyWrite);
   FileStream.Seek(-128, soFromEnd);
   FileStream.Read(Puffer, 128);

    if UpperCase(Copy(Puffer, 1, 3) ) = 'TAG' then
     begin
       _Titel:= copy(Puffer,4 ,30);
       _Interpret := copy(Puffer,34 ,30);

       _Interpret_Titel := LeerzeichenEntfernen(_Interpret + ' - ' + _Titel);

       Result := _Interpret_Titel;
     end

      else Result := 'leerer ID3-Tag';
   Except
    Result:='Fehler beim Laden';
   end;
 end;

Das Auslesen des Titels funktioniert zwar immer, das Auslesen des Interpreten aber nur bei manchen mp3-Dateien. Also hab ich mir mal 2 Dateien im Hex-Editor angeschau, eine bei der das Auslesen funktioniert und eine bei der's nicht geht:

Code:

Funktioniert nicht:
------------------------

................TAGMoney
........................
.Pink Floyd.............
.......Dark Side of the
Moon [SACD]..2003Track 6
.......................\

Punkt => Hex 00
Code:

Funktioniert:
------------------------

            TAGI Wanna D
ance With Numbers   Gir
ls On Top              
7" Ep on Black Melody  
2001Kraftwerk vs. Whitney
Houston 4

Leerzeichen => Hex 20
Wie man sieht funktioniert das Auslesen nur bei der Datei mit den Leerzeichen im Tag aber ich versteh einfach nicht warum :wall: .
Werden die Punkte (Hex 0) im Puffer automatisch entfernt und ich lese dann mit Position 34 nur Leerzeichen??

Im Voraus schon mal Danke für eure Antworten

MfG Schneider-Huetter

Matze 6. Apr 2004 13:28

Re: Problem beim id3-Tag auslesen
 
Ich vermute mal, dass eine datei die ID3 V1 Tags benutzt und die andere ID3 V2 Tags, aber genau wissen tu ich's auch nicht. :angle2:

Ghostwalker 7. Apr 2004 05:14

Re: Problem beim id3-Tag auslesen
 
Ne..sind beides ID3V1. Ich würd sagen du hast den Puffer als String-Variable gemacht, was in diesem Fall nicht so ganz funktioniert.


Probier mal folgendes:

Delphi-Quellcode:
    var
      Puffer : array[0..127] of Byte;
      MyString: String[128]; //Wichtig...Pascal-String

 begin
   :
   FileStream.read(Puffer[0],128);
   Move(Puffer[0],Mystring[1],128);
   :
   //und dann wie gehabt weiter
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz