Registriert seit: 17. Jul 2005
888 Beiträge
Delphi 11 Alexandria
|
Re: Sehr großes Problem mit den verschiedenen Audiotags
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;
|
|
Zitat
|