OK du hast mich überzeugt ich werde einfach das nehmen was in ID3Tag steht und fertig. Falls nichts drin steht dann halt der Dateiname. Ich versuche es schon die ganze Zeit hinzubekommen klappt nur nicht so recht
Delphi-Quellcode:
var
i: Integer;
sDateiname,sArtist,sTitle:String;
for I := 0 to slMP3.Count - 1 do
begin
//ID3v1Tag auslesen
if ID3v1Tag.ReadFromFile(slMP3.Strings[i]) then
begin
with ID3v1Tag do
begin
slTmp1.Add(Artist);
slTmp1.Add(Album);
slTmp1.Add(Year);
slTmp1.Add(Title);
end;
end;//if
//ID3v2Tag auslesen
if ID3v2Tag.ReadFromFile(slMP3.Strings[i]) then
begin
with ID3v2Tag do
begin
slTmp2.Add(Artist);
slTmp2.Add(Album);
slTmp2.Add(Year);
slTmp2.Add(Title);
end;
end;//if
//ab hier soll geprüft werden ob in slTmp1 oder slTmp2 was drin steht
//und wenn in einer StringList (aber nur eine) was enthalten ist soll
//dieser Eintrag in lbMP3Ausgabe eingetragen werden
//mein versuch erst slTmp überprüfen ob in String 0 und String 3 was enthalten ist
if (slTmp1.Strings[0] <> '') and (slTmp1.Strings[3] <> '') then
begin
sArtist := slTmp1.Strings[0];
sTitle := slTmp1.Strings[3];
lbMP3Ausgabe.Items.Add(sArtist +' - '+ sTitle);
end
else
begin
//wenn nichts vorhanden ist weiter und slTmp2 überprüfen
if (slTmp2.Strings[0] <> '') and (slTmp2.Strings[3] <> '') then
begin
sArtist := slTmp2.Strings[0];
sTitle := slTmp2.Strings[3];
lbMP3Ausgabe.Items.Add(sArtist +' - '+ sTitle);
end
else
begin
// wenn in slTmmp2 auch nichts enthalten ist dann nur Dateinamen eintragen
sDateiname := ExtractFileName(slMP3.Strings[i]);
lbMP3Ausgabe.Items.Add(ChangeFileExt(sDateiname,''));
end;//if slTmp2
end;//if slTmp1
end;//for
Ich weiß sieht recht komisch aus
funktioniert aber soweit zumindest werden die Mp3s mit ID3Tag Inhalt und auch die ohne Inhalt in lbMP3Ausgabe eingetragen. Nur wenn zb: eine MP3 ein ID3Tag hatte dürfte ja nicht mehr von dieser MP3 der Dateiname übernommen werden und genau das wird noch gemacht. Keine Ahnung woran es liegt vielleicht könnt ihr ja helfen