|
Вопрос # 5 461/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты!
Для получения ID3-Tag'ов использовал знания вот из этой статьи:
https://www.delphi-int.ru/articles/1/
но возникла вот такая абракадабра(в прикреплённом файле),
как от неё избавиться?
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
 |
Вопрос задал: ierihon1 (статус: 1-ый класс)
Вопрос отправлен: 29 июня 2011, 14:46
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 44; последнее сообщение — 29 июня 2011, 16:45; участников в обсуждении: 4.
Страницы: [« Предыдущая] [1] [2] [3] [Следующая »]
|
Gooddy (статус: 3-ий класс), 29 июня 2011, 15:50 [#21]:
А нет. Её даже нету в Delphi XE.
Тогда проблема скорее всего в юникоде/анси.
Скорее всего код получающий теги неправильно что-то вытворяет.
Чисти код! Чисти код! Чисти код!
|
|
ierihon1 (статус: 1-ый класс), 29 июня 2011, 15:51 [#22]:
вот этот:function readID3Tag(FileName: string): TID3Tag;
var
FS: TFileStream;
Buffer: array [1..128] of Char;
begin
FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
FS.Seek(-128, soFromEnd);
FS.Read(Buffer, 128);
with Result do
begin
ID := Copy(Buffer, 1, 3);
Titel := Copy(Buffer, 4, 30);
Artist := Copy(Buffer, 34, 30);
Album := Copy(Buffer, 64, 30);
Year := Copy(Buffer, 94, 4);
Comment := Copy(Buffer, 98, 30);
Genre := Ord(Buffer[128]);
end;
finally
FS.Free;
end;
end;?
|
|
Gooddy (статус: 3-ий класс), 29 июня 2011, 15:52 [#23]:
Замени ка вот это
type
TID3Tag = record
ID: string[3];
Titel: string[30];
Artist: string[30];
Album: string[30];
Year: string[4];
Comment: string[30];
Genre: Byte;
end;
На это:
type
TID3Tag = record
ID: ansistring[3];
Titel: ansistring[30];
Artist: ansistring[30];
Album: ansistring[30];
Year: ansistring[4];
Comment: ansistring[30];
Genre: Byte;
end;
Чисти код! Чисти код! Чисти код!
|
|
Gooddy (статус: 3-ий класс), 29 июня 2011, 15:53 [#24]:
И ещё
Buffer: array [1..128] of Char;
на
Buffer: array [1..128] of ansichar;
Чисти код! Чисти код! Чисти код!
|
|
ierihon1 (статус: 1-ый класс), 29 июня 2011, 15:53 [#25]:
уже пробовал...
|
|
Gooddy (статус: 3-ий класс), 29 июня 2011, 15:53 [#26]:
Может сработает.
Чисти код! Чисти код! Чисти код!
|
|
Gooddy (статус: 3-ий класс), 29 июня 2011, 15:54 [#27]:
Блин.
Чисти код! Чисти код! Чисти код!
|
|
Вадим К (статус: Академик), 29 июня 2011, 15:54 [#28]:
Цитата (Gooddy):
Buffer: array [1..128] of ansichar;
о замене string на ansistring я писал выше, но об этом буфере забыл...
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Gooddy (статус: 3-ий класс), 29 июня 2011, 15:54 [#29]:
Но менять не всё надо а только эти строчки. Попробуй ещё раз.
Чисти код! Чисти код! Чисти код!
|
|
ierihon1 (статус: 1-ый класс), 29 июня 2011, 15:54 [#30]:
а вот Buffer: array [1..128] of ansichar;
помогло)))
|
29 июня 2011, 15:55: Статус вопроса изменён на решённый (изменил автор вопроса — ierihon1)
|
Gooddy (статус: 3-ий класс), 29 июня 2011, 15:57 [#31]:
Вадим К: мне тоже кажется, что проблема в юникоде, чтение из файла очень низкоуровневое, любая замена типа приведёт к ошибке.
Чисти код! Чисти код! Чисти код!
|
|
ierihon1 (статус: 1-ый класс), 29 июня 2011, 15:59 [#32]:
и ещё type
TID3Tag = record
ID: string;
Titel: string;
Artist: string;
Album: string;
Year: string;
Comment: string;
Genre: Byte;
end;
я оставил вот так, предупреждения чтобы никакие не вылазили
|
|
Gooddy (статус: 3-ий класс), 29 июня 2011, 16:00 [#33]:
ierihon1: а шкурки каким набором компонентов делал?
Чисти код! Чисти код! Чисти код!
|
|
ierihon1 (статус: 1-ый класс), 29 июня 2011, 16:01 [#34]:
какие шкурки? скины? AlphaControl
|
|
Вадим К (статус: Академик), 29 июня 2011, 16:02 [#35]:
Gooddy: Почему кажется? тут действительно проблема с преобразованием ansi->unicode. (если правильнее, то ansi=>UCS2).
Плюс делфи в многих местах сама делает преобразование строки и это вылазит боком для тех, кто думает, что делфи обязана все правильно преобразовать.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Gooddy (статус: 3-ий класс), 29 июня 2011, 16:02 [#36]:
Ну да. Skin = кожа, шкура.
Чисти код! Чисти код! Чисти код!
|
|
Gooddy (статус: 3-ий класс), 29 июня 2011, 16:03 [#37]:
Вадим К: Я писал когда ierihon1 ещё не решил проблему. Тогда я не был уверен.
Я не работал на дельфи на таком низком уровне, поэтому у меня проблем рода unicode->ansi или наоборот не возникало.
Да и дельфи я больше не пользуюсь, нашёл опенсорсный аналог.
Чисти код! Чисти код! Чисти код!
|
|
ierihon1 (статус: 1-ый класс), 29 июня 2011, 16:04 [#38]:
ясно.. ну сейчас уже всё пашет и кстати обнаружились странные файлы у которых тэги "ЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭЭ" например такие))
|
|
Gooddy (статус: 3-ий класс), 29 июня 2011, 16:06 [#39]:
ierihon1: Просто не все пираты нормально расставляют теги =)
Чисти код! Чисти код! Чисти код!
|
|
ierihon1 (статус: 1-ый класс), 29 июня 2011, 16:07 [#40]:
да уж эти злодеи)
|
Страницы: [« Предыдущая] [1] [2] [3] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|