Registriert seit: 17. Jul 2005
891 Beiträge
Delphi 11 Alexandria
|
Re: WMA TAGs auslesen
24. Jun 2007, 20:23
Ich hatte mal ein sehr ähnliches (wenn nicht dasselbe) Problem. Ich hab Version 1.0 vom 29. April 2002 der ATL-WMA- Unit. Und da ist in eriner Prozedur ein kleines Fehlerchen drin. So klappt es bei mir:
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
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
|