![]() |
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:
Wie man sieht funktioniert das Auslesen nur bei der Datei mit den Leerzeichen im Tag aber ich versteh einfach nicht warum :wall: .Funktioniert: ------------------------ TAGI Wanna D ance With Numbers Gir ls On Top 7" Ep on Black Melody 2001Kraftwerk vs. Whitney Houston 4 Leerzeichen => Hex 20 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 |
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:
|
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 10:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz