Hi Leute,
als ich gerade diesen Thread laß ist mir etwas aufgefallen.
@Chakotay1308: Diese Version:
Delphi-Quellcode:
type
TID3Tag = record
// diese Struktur erweitert die Char arrays um ein Zeichen für Nullterminator,
// somit muß sie Feld für Feld gelesen und geschrieben werden, da ID3 eben diese Terminatoren NICHT speichert.
ID: array[0..3] of Char;
Title: array[0..30] of Char;
Artist: array[0..30] of Char;
Album: array[0..30] of Char;
Year: array[0..4] of Char;
Comment: array[0..30] of Char;
Genre: Byte;
end;
function ReadID3Tag(const FileName: String): TID3Tag;
begin
FillChar(Result, SizeOf(Result), 0);
with TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone) do
try
Position := Size - 128;
Read(Result.ID, 3);
Read(Result.Title, 30);
Read(Result.Artist, 30);
Read(Result.Album, 30);
Read(Result.Year, 4);
Read(Result.Comment, 30);
Read(Result.Genre, 1);
finally
Free;
end;
end;
funktionioniert nur bei ID3v1 Tags, es gibt aber schon seit langem die oft verwendete ID3v1.1. Du solltest auf jeden Fall die Funktion ausbauen, die Struktur ist folgende:
ID ('TAG')
Title 30
Artist 30
Album 30
Year 4
Comment 28
0-Byte ($0) 1
Album Track (Titelnummer) 1
Genre 1
die Zahlen sind natürlich in Byte.
Gruß DelphiFreund