AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Sehr großes Problem mit den verschiedenen Audiotags
Thema durchsuchen
Ansicht
Themen-Optionen

Sehr großes Problem mit den verschiedenen Audiotags

Ein Thema von Nils_13 · begonnen am 19. Aug 2006 · letzter Beitrag vom 21. Aug 2006
 
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#4

Re: Sehr großes Problem mit den verschiedenen Audiotags

  Alt 20. Aug 2006, 14:23
Die Mp3 Dateien werden zwar korrekt ausgelesen, aber bei WMA-Dateien wird in die Listbox ein Strich hinzugefügt, statt Artist - Titel. AddFiles ruft für die Items ReadID3Tag (ich weiß, der Titel der Prozedur passt nicht mehr) auf und ReadId3Tag entscheidet weiter:
Delphi-Quellcode:
TID3Tag = record
  // MP3
  ID: Array[0..3] of Char;
  Titel: Array[0..30] of Char;
  Artist: Array[0..30] of Char;
  Album: Array[0..30] of Char;
  Year: Array[0..4] of Char;
  Comment: Array[0..30] of Char;
  Genre: Byte;
  Filename: String;
  Endung: String;
  // WMA
  FValid: Boolean;
  FFileSize: Integer;
  FChannelModeID: Byte;
  FSampleRate: Integer;
  FDuration: Double;
  FBitRate: Integer;
  FTitle: WideString;
  FArtist: WideString;
  FAlbum: WideString;
  FTrack: Integer;
  FYear: WideString;
  FGenre: WideString;
  FComment: WideString;
end;


procedure TfrmMain.AddFiles(files : Array of String);
var
  len : integer;
  i : integer;
begin
  len := Length(fFiles);
  SetLength(fFiles, len + Length(files));
  for i := 0 to high(files) do
  begin
    fFiles[len+i] := ReadID3Tag(files[i]);
  end;
end;

procedure TfrmMain.xiAddClick(Sender: TObject);
var
  i : Integer;
begin
  if op1.Execute then
  begin
    setlength(f, op1.files.count);
    for i := 0 to pred(op1.files.count) do
    begin
      f[i] := op1.files[i];
    end;
    AddFiles(f);
  end;
end;

function TfrmMain.ReadID3Tag(const FileName: String): TID3Tag;
begin
  if LowerCase(ExtractFileExt(Filename)) = '.mp3then
  begin
    FillChar(Result, SizeOf(Result), 0);
    with TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone) do
    try
      Position := Size - 128;
      Read(Result.ID, 3);
      Read(Result.Titel, 30);
      Read(Result.Artist, 30);
      Read(Result.Album, 30);
      Read(Result.Year, 4);
      Read(Result.Comment, 30);
      Read(Result.Genre, 1);
      Result.Filename := Filename;
      Result.Endung := LowerCase(ExtractFileExt(Filename));
    finally
      Free;
    end;
  end;

  if LowerCase(ExtractFileExt(Filename)) = '.wmathen
  begin
    if WMAfile.ReadFromFile(Filename) then
    if WMAfile.Valid then
    begin
      Result.FTitle := WMAfile.Title;
      Result.FArtist := WMAfile.Artist;
      Result.Filename := Filename;
      Result.Endung := LowerCase(ExtractFileExt(Filename));
    finally
      Free;
    end;
  end;
end;
  Mit Zitat antworten Zitat
 


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 19:28 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