Einzelnen Beitrag anzeigen

Benutzerbild von Gausi
Gausi

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

Re: Sehr großes Problem mit den verschiedenen Audiotags

  Alt 21. Aug 2006, 10:44
Ich nutze folgende leicht korrigierte Version der ATL-WMA-Unit. Eine Funktion muss um eine Zeile ergänzt werden:
Delphi-Quellcode:
procedure ReadTagExtended(const Source: TStream; var Tag: TagData);
var
  Iterator1, Iterator2, FieldCount, DataSize, DataType: Word;
  FieldName, FieldValue: WideString;
begin
  { Read extended tag data }
  Source.ReadBuffer(FieldCount, SizeOf(FieldCount));
  for Iterator1 := 1 to FieldCount do
  begin
    { Read field name }
    Source.ReadBuffer(DataSize, SizeOf(DataSize));
    FieldName := ReadFieldString(Source, DataSize);
    { Read value data type }
    Source.ReadBuffer(DataType, SizeOf(DataType));
    { Read field value only if string }
    if DataType = 0 then
    begin
      Source.ReadBuffer(DataSize, SizeOf(DataSize));
      FieldValue := ReadFieldString(Source, DataSize);
    end
    else
     begin
      //***************************
      // Added By Daniel Gausi Gaußmann, 16.3.2006
      // Dass diese Zeile wichtig ist, sollte leicht verständlich sein ;-)
      // DataSize hat sonst einen falschen Wert, und es wird falsch gesprungen
      Source.ReadBuffer(DataSize, SizeOf(DataSize));
      //***************************
      Source.Seek(DataSize, soFromCurrent);
    end;
    
    { Set corresponding tag field if supported }
    for Iterator2 := 1 to WMA_FIELD_COUNT do
      if UpperCase(Trim(FieldName)) = WMA_FIELD_NAME[Iterator2] then
        Tag[Iterator2] := FieldValue;
  end;
end;
  Mit Zitat antworten Zitat