How do I rectify that?
Main Topics
Browse All TopicsOk I downloaded and used the following
http://www.torry.net/vcl/m
and sometimes it works and sometimes it just passes strings like ÿþA. However some freeware tag readers I am using do show the text like the Title, Artist etc. on the same files that the above afore mentioned code shows the ÿþA. I haven't been able to find Delphi code that reads the files appropriately. Also the afore mention code in the zip file doesn't seem to show the Album Artist or Images or things like Track # of Tracks or Disc # of Discs.
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
Since the component can't handle it I'm afraid you have to find another component. This is a very simple component, which only supports the same info as ID3v1. But perhaps you can extend it with the features you're missing? You may find info about the id3 standard at http://www.id3.org/.
I know only of .NET components (have made one myself).
ID3 tags are structured as frames, with a header of ten bytes and then data. There is also one header before the frames. If you decide too extend the component you got, you'll need to add support for the frames with the info you're missing, image and disc#, that is APIC and TPOS. Artist and track# are supported by your component.
What you have to do is add the frame ids 'APIC' and 'TPOS' to the array ID3V2_FRAME, add functions/properties to handle the frames (compare for example the FSetArtist function, and the property Artist).
If you wan't to support unicode, you have to check the first byte of the data in the frames that supports different encodings. Is it 0 then it's the ISO-8859-1 character set, if it's 1 then the text will be in 16 bit unicode with BOM (0xfffe or 0xfeff depening on order). Also you have think about changing the variabletype for the textframe-variables (Artist, Title etc) to byte arrays or convert from unicode before assigning the value, but then you will lose those characters not supported by ISO-8859-1.
By the way the component supports ID3 v2.3 not v2.4.
Here's a starter. This will convert unicode to ansi, un-convertable characters will be shown as ?s. If you like to see them, you have to change FTitle to WideString. In delphi 5 at least there's also the problem that the ordinary components like TEditBox wont show unicode.
procedure TID3v2.FSetTitle(const NewTitle: string);
begin
{ Set song title }
if (NewTitle[1] = #0) then begin
FTitle := Trim(NewTitle);
end else if (NewTitle[1] = #1) then begin
FTitle := Trim(PWideChar(@NewTitle[4
end;
end;
And also in the ReadFromFile function assign the data like
Title := Tag.Frame[1];
I'm not that familiar with unicode and delphi either, and I only have delphi 5 to test on.
Business Accounts
Answer for Membership
by: pivarPosted on 2009-02-10 at 01:30:33ID: 23598617
Hi,
The problem is that your component can't handle unicode. ÿþ (or FF FE) is the unicode startmarker and the text ends after A since there is a null in the second byte in unicode with normal ascii characters.
/peter