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
.
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