AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi ID3-Tag oder besser Dateiname anzeigen lassen ?
Thema durchsuchen
Ansicht
Themen-Optionen

ID3-Tag oder besser Dateiname anzeigen lassen ?

Ein Thema von newuser01 · begonnen am 28. Sep 2006 · letzter Beitrag vom 30. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
newuser01

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

ID3-Tag oder besser Dateiname anzeigen lassen ?

  Alt 28. Sep 2006, 19:51
Hallo

Ich lass ja in meinem Player nach dem die Festplatte nach mp3's durchsucht wurde diese mit vollem Pfad in einer Listbox anzeigen. Ich finde aber das dies keine optimale Lösung ist weil der gesamte Pfad recht lang sein kann. Ich hab nun versucht es so zu ändern.. erst hab ich die ganzen mp3's die auf der Festplatte gefunden wurden in einer Stringlist speichern lassen. Danach hab ich die Stringlist nach dem ID3-Tag 'Artist' + 'Title' der einzelnen mp3's durchsucht und diesen dann in der anzuzeigenden ListBox gespeichert. Das ganze funktioniert soweit auch ganz gut. Nur nun stellt sich die Frage was mach ich wenn kein ID3-Tag Eintrag vorhanden is. Ist es nicht vielleicht doch besser nur den Dateinamen ohne Pfad und ohne Dateierweiterung anzeigen zu lassen ? Wenn ja stellt sich gleich die nächste Frage wie löse ich dieses Problem und mach zb: aus "E:\mp3\meinsong.mp3" dann mur "meinsong"
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?

  Alt 28. Sep 2006, 20:02
das ganze geht mit ExtractFileName und ChangeFileExt
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
888 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?

  Alt 28. Sep 2006, 20:03
Zeig halt immer was sinnvolles an.

Wenn ID3-Tag vorhanden, dann "Artist - Titel". Ist Artist nicht vorhanden, dann nur "Titel", ohne " - " davor. Ist der Titel auch nicht vorhanden, dann "Dateiname". Ist Dateiname auch nur "Track01.mp3", dann hat der Anwender Pech gehabt.
  Mit Zitat antworten Zitat
newuser01

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

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?

  Alt 28. Sep 2006, 20:32
Delphi-Quellcode:
//Dateinamen hab ich schon mit
lbMP3s.Items.Add(ExtractFileName(slTmp.Strings[i]));
und wie bekomm ich mit ChangeFileExt noch die Dateiendung weg ?
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?

  Alt 28. Sep 2006, 20:33
in dem du als neue Endung einen Leerstring angibst (also nichts)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
newuser01

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

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?

  Alt 28. Sep 2006, 20:39
Delphi-Quellcode:
sDateiname := ExtractFileName(slTmp.Strings[i]);
lbMP3s.Items.Add(ChangeFileExt(sDateiname,''));

DANKE !! für eure Hilfe
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
newuser01

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

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?

  Alt 28. Sep 2006, 20:42
HALT STOP

Eine Frage hab ich noch Was ist wenn im ID3-Tag nur ein Strich oder ein Komma oder sonstige Zeichen sind ? hätte da jemamd eine Lösung denn wäre ja blöd wenn im Playerfenster nur ein Komma oder sonstiges zu sehen wäre
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
newuser01

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

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?

  Alt 28. Sep 2006, 21:33
Ich hätte doch eine Idee ich überprüfe einfach wieviel Zeichen im ID3-Tag bei Artist und Titel drin stehn wenn es auch nur in einem zu wenig sind dann Pech gehabt wird halt nur der Dateiname angezeigt

Delphi-Quellcode:
if (Length(sArtist) > 5) or (Length(sTitle) > 5) then // was meint ihr sind 5 Zeichen zu wenig ?
begin
lbMP3s.Items.Add(sArtist +' - '+ sTitle);
end
oder hat jemand eine bessere Idee ?
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
888 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?

  Alt 28. Sep 2006, 22:33
Ein paar Interpreten mit 4 oder weniger Buchstaben:

2Pac, A, Abba, ACDC, Aha, B3, Bap, JBO, REM, Seal, Sido, Tatu, U2, UB40. Ich denke, das sind ein paar zuviel, die da nicht richtig angezeigt werden, bei den Titeln möchte ich gar nicht erst anfangen.

Also: Wenn in trim(ID3Tag.Artist) was drin steht, dann nimm den. Wenn da Müll drin steht, dann soll der User seine Sammlung aufräumen....

Und auch wenn die OR-Verknüpfung dafür sorgt, dass nur sehr wenige Titel falsch angezeigt werden, weil fast immer der Titel oder der Interpret länger als 5 Zeichen ist, so dürfte es den User doch verwirren, wenn er ein Album von Abba in die Playlist packt, und überall kommt der ID3Tag, nur bei "SOS" steht der Dateiname...
  Mit Zitat antworten Zitat
newuser01

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

Re: ID3-Tag oder besser Dateiname anzeigen lassen ?

  Alt 29. Sep 2006, 00:07
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
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 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 by Thomas Breitkreuz