Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ID3-Tag oder besser Dateiname anzeigen lassen ? (https://www.delphipraxis.net/78083-id3-tag-oder-besser-dateiname-anzeigen-lassen.html)

Gausi 29. Sep 2006 09:11

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?
 
Das einzige, was mir da auffällt ist, dass du die temporären Stringlisten immer weiter befüllst, anstatt sie vor jedem Durchlauf zu löschen. Somit bleibt der nullte und dritte String in diesen Listen immer gleich, also werden immer die Dateinamen eingetragen, wenn die erste Datei keinen Tag hatte.

newuser01 29. Sep 2006 14:16

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?
 
Hallo Gausi auch wenn ich am Ende immer die Listen lösche passiert leider das selbe :gruebel:

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

newuser01 29. Sep 2006 14:25

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?
 
Nachtrag: Wenn in slMP3 zb: 10 Dateien wie hier zu sehen ist sind und zb: nur die "Datei001.mp3" einen ID3Tag besitzt

Datei001.mp3
Datei002.mp3
Datei003.mp3
Datei004.mp3
Datei005.mp3
Datei006.mp3
Datei007.mp3
Datei008.mp3
Datei009.mp3
Datei010.mp3

dann müsste eigentlich in "lbMP3Ausgabe" nur folgendes drin stehn

ID3Tag der Datei
Datei002.mp3
Datei003.mp3
Datei004.mp3
Datei005.mp3
Datei006.mp3
Datei007.mp3
Datei008.mp3
Datei009.mp3
Datei010.mp3

und genau so steht es nicht drin sondern so wie hier
als erstes listet er alle Dateien und wenn er fertig ist trägt er es noch mal richtig ein

Datei001.mp3
Datei002.mp3
Datei003.mp3
Datei004.mp3
Datei005.mp3
Datei006.mp3
Datei007.mp3
Datei008.mp3
Datei009.mp3
Datei010.mp3
ID3Tag der Datei //ab hier ist es richtig
Datei002.mp3
Datei003.mp3
Datei004.mp3
Datei005.mp3
Datei006.mp3
Datei007.mp3
Datei008.mp3
Datei009.mp3
Datei010.mp3


vielleicht ist es jetzt besser zu verstehen was ich meine deswegen der Nachtrag :-D

newuser01 29. Sep 2006 19:55

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?
 
Hat denn keiner eine Idee woran es liegen könnte ? Ich wäre auch für ein völlig neues Ansatz offen zählen tut nur das Ergebnis

newuser01 30. Sep 2006 22:40

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?
 
Ich könnte mich Ohrfeigen :wall: mein Code funktioniert einwandfrei der Fehler lag bei mir selber. Ich habe ja die ganze Zeit mit einem bestimmten Ordner getestet wo 10 mp3s drin waren und eine Datei davon war mit einem ID3Tag versehen wie oben beschrieben. Nun hab ich mich ja gewundert warum die Dateien immer doppelt in lbMP3Ausgabe eingetragen wurden :mrgreen: ganz einfach die Dateien waren auf meiner Festplatte doppelt vorhanden :wall: also konnten diese ja auch nur doppelt angezeigt werden :wall: ICH HORNOCHSE :mrgreen: und damit befasst man sich nun STUNDEN :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz