![]() |
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.
|
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 |
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 |
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
|
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. |
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