Einzelnen Beitrag anzeigen

newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#12

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?

  Alt 29. Sep 2006, 15:16
Hallo Gausi auch wenn ich am Ende immer die Listen lösche passiert leider das selbe

Delphi-Quellcode:
procedure TfMain.btnSearchClick(Sender: TObject);
var
  i: Integer;
  sDateiname,sArtist,sTitle:String;

slMP3.Clear; // vor dem füllen löschen
//hier wird slMP3 mit allen mp3 Dateien gefüllt die auf der Festplatte gefunden wurden

//ab hier werden diese Dateien dann nach ID3Tag überprüft um sie dann Ordnungsgemäß anzuzeigen
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

slTmp1.Clear;
slTmp2.Clear;

end;//for

//Speicher freigeben außer slMP3 die wird noch Temporär gebraucht
slTmp1.Clear;
slTmp2.Clear;
slTmp1.Free;
slTmp2.Free;

end;//procedure
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat