This is a class still under development. At the moment it features fast reading, support for a file of any size (over 4 GB is no problem), full Unicode support for both reading tags and filenames, support for 2.2, 2.3 and 2.4 and possibly a quite inventive access to the frames.
To do:
Save files (needs frame conversion between versions 2.2 and 2.3/2.4)
CRC-32 validation
Private_Unsynchronize function is unfinished
Properties for many header & frame flags
Support for multipart tags (separate header & footer)
Does not currently preserve unknown tags as required by the standard
Adding and removing tags
More easy access properties
Methods & properties
Count = number of frames
FileLoad = opens a file, finds & reads the tag
FileSave = saves a file (not implemented)
FrameData = get/set frame's raw data as byte array
Frames = get a Long array of indexes for a particular frame ID
FrameText = get/set frame's text (encoding is dealt automatically)
FrameTextID = get frame's ID as text
Text = get/set text of a frame of given type (first one found in tag; created if does not exist)
Version = version number
VersionText = version as full text
This far testing has been very limited; it would be nice to see this class being read tested on multiple files of different versions. This is also a reason I push out the class early.
I try to give all the base features so that one would only need to care about things such as how to uncompress & show a PNG image, how to uncompress compressed data, how to encrypt if an encrypted frame is found... these are things that may already have a generally used code solution in a project.