AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Problem beim id3-Tag auslesen

Ein Thema von Schneider-Huetter · begonnen am 30. Apr 2004 · letzter Beitrag vom 9. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2   
Schneider-Huetter

Registriert seit: 5. Mär 2004
97 Beiträge
 
Delphi 7 Personal
 
#1

Problem beim id3-Tag auslesen

  Alt 30. Apr 2004, 09:03
Hallo zusammen,
ich habe ein für mich völlig unverständliches Problem beim Auslesen des id3-Tags:
Die Tags werden mittels TFileStream in ein "Array of Char" eingelesen und dann in 2 getrennte Strings (für Interpret und Titel) kopiert, das funktioniert so weit auch ganz gut solange ich nur entweder den Titel oder den Interpret z.B. in ein Edit-Feld schreibe. Wenn ich jedoch die beiden Strings zusammenfügen möchte (z.B.: Interpret + ' - ' + Titel) wird nur der Interpret angezeigt(bzw der String, der vorne steht). Wenn ich zuert den Titel in ein Edit-Feld schreibe, dann den Interpret in ein anderes Edit-Feld schreibe und sie dann zusammenfüge funktionirt es
????

Im Voraus schon mal vielen Dank
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Problem beim id3-Tag auslesen

  Alt 30. Apr 2004, 09:16
Moin!

Tja, das Problem klingt gut und interessant, aber ein wenig Code wäre schonmal nicht schlecht, weil so kann ich nur folgendes sagen: Tjoa, schick, scheint irgendwo der Wurm drin zu sein...

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#3

Re: Problem beim id3-Tag auslesen

  Alt 30. Apr 2004, 09:23
Hängt den Strings vielleicht ein #0 drann, welches Delphi beim konkatinieren nicht mitbekommt?!
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Problem beim id3-Tag auslesen

  Alt 30. Apr 2004, 09:41
hmmm...

ok..hier mal meine Routine zum Lesen von ID3 (nur V1 !!)

Code:
procedure TID3V1.Readtag;
var
  st : TFilestream;
  buf: array[0..127] of char;
  tmppos,curpos : integer;


  function ArrayToStr(count:integer):string;
  var
    i,ende : integer;
  begin
    result := '';
    ende := curpos+(count-1);
    for I := curpos to ende do
      result := result+buf[i];
    curpos := ende+1;
  end;

begin
  readed := false;
  changed := false;
  try
    st := TFilestream.create(ffilename,fmOpenRead);
    st.Seek(-128,soFromEnd);
    st.ReadBuffer(buf[0],128);
    st.free;
    if (BUF[0]='T') and (BUF[1]='A') and (BUF[2]='G') then
    begin
      readed := true;
      curpos := 3;
      fTitle := ArrayToStr(30);
      fartist := arraytostr(30);
      falbum := arraytostr(30);
      fyear := arraytostr(4);
      tmppos := curpos+28;
      if (ord(buf[tmppos]) =$00) and (ord(buf[tmppos+1]) <> $00) then
      begin
        fversion := 1;
        fcomment := arraytostr(28);
        falbumtrack := ord(buf[curpos+1]);
        inc(curpos,2);
      end
      else
      begin
        fversion := 0;
        fcomment := trim(arraytostr(30));
      end;
      fgenre := ord(buf[127]);
    end;
  except
    on e:exception do
      raise e;
  end;
end;

Hoffe es hilft weiter
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Problem beim id3-Tag auslesen

  Alt 30. Apr 2004, 10:19
Moin!

Ok, die Strings die du dir zusammenholst aus dem Record sind alle am Ende mit einer #0 aufgefüllt und diese wird die Probleme machen. Daher musst du vorher die Strings mal kürzen, bzw. die #0 hinten entfernen.

MfG
Muetze1
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#6

Re: Problem beim id3-Tag auslesen

  Alt 30. Apr 2004, 10:46
Besorg dir doch die JediVCL. Da sind ID3 Komponenten mit dabei.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Problem beim id3-Tag auslesen

  Alt 30. Apr 2004, 11:33
Moin!

Zitat von Robert Marquardt:
Besorg dir doch die JediVCL. Da sind ID3 Komponenten mit dabei.
Oder meine ID3 Tag Lib, die ist aber noch nicht auf der neuen Page online. Wenn interesse besteht lade ich die gleich heute abend mal hoch. Die Lib kann dann ID3v1.x Tags sowie ID3v2.2.x.x und höher. Zusätzlich auch support für unbekannte Tags und Bilder Tags.

MfG
Muetze1
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#8

Re: Problem beim id3-Tag auslesen

  Alt 30. Apr 2004, 15:58
Muetze1, kannst du mal deine Komponente mit der Jedi-Komponente vergleichen?
Eine von beiden ist bestimmt besser und der andere lernt was.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: Problem beim id3-Tag auslesen

  Alt 30. Apr 2004, 18:06
Moin!

Ok, habe mir mal die JEDI VCL runtergeladen und den Source angeschaut. Meine Lib entstand aus der Not und ist daher einfacher, aber einen kleinen Vergleich wage ich mal.

ID3 Tag Lib
- keine Komprimierung / Verschlüsselte Tags
- keine ID3v2.2.x.x, erst ab v2.3.x.x und höher (4 Buchstabige Tag IDs)
- kein Unicode UTF-8/UTF-16 Support
+ alle Tags, auch unbekannte, können über Streams geschrieben und gelesen werden
+ kleinerer Code
+ eine Lib für beide Tag Typen

JEDI ID3
- keine Komprimierung / verschlüsselte Tags
- unbekannte Tags können nicht gelesen / geschrieben werden, bleiben nil
- 2 Klassen / Units für die unterschiedlichen Tag Typen
+ auch ID3v2.2.x.x Tags
+ Unicode anscheinend supported

Dann ist noch die Frage ob die JEDI ID3 Lib unbekannte Tags automatisch entfernt, wenn diese auch nicht gelesen werden konnten. Das konnte ich beim überschauen des Codes nicht herauslesen.

Ich wollte die JEDI VCL nicht installieren und ich habe auch nicht mit der JEDI ID3 Klasse gearbeitet. Das müsste man vielleicht nochmal im Detail klären. Auch kann es noch weitere Unterschiede geben, aber ich habe den Code nur überflogen.

It's your choice...

MfG
Muetze1
Angehängte Dateien
Dateityp: zip mp3tagclass.zip (31,0 KB, 37x aufgerufen)
  Mit Zitat antworten Zitat
Schneider-Huetter

Registriert seit: 5. Mär 2004
97 Beiträge
 
Delphi 7 Personal
 
#10

Re: Problem beim id3-Tag auslesen

  Alt 3. Mai 2004, 09:03
Vielen Dank für eure Antworten, werde eure Vorschläge mal testen, das mit der #0 hört sich ziemlich vernünftig an. Die Komponenten will ich eigentlich nur als Notlösung einsetzen, man will ja auch was lernen beim Programmieren

MfG Schneider-Huetter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz