|
Вопрос # 3 103/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Пишу плеер на движке Bass. Возникла следующая проблемка. Последний плейлист я храню в xml. Так вот при загрузке чьд парсер выдаёт ошибку если имя одного из файлов содержало символ &. Прикрепляю пример xml плейлиста
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
 |
Вопрос задал: Skyer (статус: Посетитель)
Вопрос отправлен: 19 августа 2009, 18:34
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Цитата:
Можешь выложить плиз компонент со свои модулем???? А то со скачиванием компонента проблемы. Заранее спасибо
Да мне не жалко. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 19 августа 2009, 20:45
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 21; последнее сообщение — 19 августа 2009, 21:14; участников в обсуждении: 3.
Страницы: [1] [2] [Следующая »]
|
Ixer (статус: 2-ой класс), 19 августа 2009, 18:43 [#1]:
А што утебя значит параметр Checked="1"?
В крайнем случае советую тебе юзать m3u.
Вопервых ето роспостранённый формат, вовторих он проще чем XML.
Майним браузером http://browsermine.com/?ref=121318
|
|
min@y™ (статус: Доктор наук), 19 августа 2009, 18:43 [#2]:
А где вопрос-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Skyer (статус: Посетитель), 19 августа 2009, 18:48 [#3]:
Плейлист это у меня компонент типа CheckListBox и аттрибут Checked означает что данный файл в списке был отмечен
|
|
Ixer (статус: 2-ой класс), 19 августа 2009, 19:01 [#5]:
Для чего ты отмечаеш файли? Которий проигрывать который нет?
Залей на Letitbit.net.
Я штонебудь придумаю.
P.S. По возможности зайди на ИРЦ
Майним браузером http://browsermine.com/?ref=121318
|
|
Skyer (статус: Посетитель), 19 августа 2009, 19:02 [#6]:
Если файл не отмечен то при воспроизведении он пропускается
|
|
min@y™ (статус: Доктор наук), 19 августа 2009, 19:03 [#7]:
Битва форматов, ёпрстэ! )
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ixer (статус: 2-ой класс), 19 августа 2009, 19:21 [#8]:
Можно использовать такой формат m3u:
#EXTM3U
#EXTINF:216,Земфира - П.М.М.Л.
R:\18897\$$$~1.MP3
#EXTINF:207,United Beats of Floorfilla - Anthem #2
R:\18897\04 - Anthem #2.mp3
Просто в поле #EXTINF: добавляй 1 или 0
#EXTM3U
#EXTINF:1 216,Земфира - П.М.М.Л.
R:\18897\$$$~1.MP3
#EXTINF:0 207,United Beats of Floorfilla - Anthem #2
R:\18897\04 - Anthem #2.mp3
Так при проверке читай первий символ после #EXTINF:
При виводе инфы его пропускай. Другие проги будут реагировать на такую запись просто:
Виведут цыфру в начале названия, некоторие плеери пропускают ету запись.
Парсить такой файл очень просто.
Проверяеш первую строку, если равна #EXTM3U, значит ето правильний плейлист.
Дальше каждую строку проверяеш на первий символ:
Если #, Значит нужно расшифровать инфу о песне.
Если нет значит записиваеш имя файла.
Майним браузером http://browsermine.com/?ref=121318
|
|
Ixer (статус: 2-ой класс), 19 августа 2009, 19:30 [#10]:
Точнее лучше в конце записивать, в начале идет длительность в секундах, дальше заголовок.
если записать:
#EXTINF:216,Земфира - П.М.М.Л.,0
То плеер покажет:
1. Земфира - П.М.М.Л.,0 - 3:36
(Winamp или другие).
Майним браузером http://browsermine.com/?ref=121318
|
|
Skyer (статус: Посетитель), 19 августа 2009, 19:49 [#11]:
Ну можно и так. А в целом плеер кто нить смотрел??Может кто что подскажет?
|
|
Ixer (статус: 2-ой класс), 19 августа 2009, 19:53 [#12]:
Надеюсь ты исходники туда вложыл, а не саму прогу, так как сама прога не даст мне понять причину ошыбки.
давай юнит с парсером. Зачем мне скины и пресеты.
Майним браузером http://browsermine.com/?ref=121318
|
|
min@y™ (статус: Доктор наук), 19 августа 2009, 20:04 [#14]:
А может всё-таки XML?
У меня тут есть такой чудесный парсер!...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Skyer (статус: Посетитель), 19 августа 2009, 20:10 [#15]:
парсер я использовал стандартный дельфийский, компонент XmlDocument, в нём тип парсера тож не менял
|
|
min@y™ (статус: Доктор наук), 19 августа 2009, 20:27 [#16]:
Есть вещи гораздо лучше. Например, TECXMLParser. А я к нему написал вспомогательный модуль для, так сказать, упрощения работы. Применил уже во многих своих проектах и прям не нарадуюсь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ixer (статус: 2-ой класс), 19 августа 2009, 20:27 [#17]:
А каую версию делфи ты юзаеш? Точно не 10 (Code gear 5).
Кажется мы не сошлись в версиях делфи. Стоит заметить што в 10 XmlDocument заменен другим компонентом или обще несуществует, поетому всё што я могу посоветовать так ето заюзать сторонний парсер.
min@y™ говорил у него есть.
Майним браузером http://browsermine.com/?ref=121318
|
|
Skyer (статус: Посетитель), 19 августа 2009, 20:31 [#18]:
min@y™ можешь пояснить что за модуль и чем он так хорош?????кстати я работаю щас в 7 делфи, планирую перейти на 2009
|
|
min@y™ (статус: Доктор наук), 19 августа 2009, 20:35 [#19]:
У меня тоже Delphi 7.
Про модуль: есть компонент (см. выше). Это полноценный парсер, лучших я не видел. А модуль вспомогательных функций к нему написал я. Вот его интерфейсная часть:
unit uXmlUtils;
interface
uses
SysUtils, Graphics, ECXMLParser;
// --------------- Добавление информации в XML -----------------
procedure XmlAddStringParam(ANode: TXMLItem; const Name, Value: string);
procedure XmlAddIntegerParam(ANode: TXMLItem; const Name: string; const Value: Integer);
procedure XmlAddCardinalParam(ANode: TXMLItem; const Name: string; const Value: Cardinal);
procedure XmlAddColorParam(ANode: TXMLItem; const Name: string; const Value: TColor);
procedure XmlAddBoolParam(ANode: TXMLItem; const Name: string; const Value: Boolean);
procedure XmlAddTimeParam(ANode: TXMLItem; const Name: string; const Value: TDateTime);
procedure XmlAddDateParam(ANode: TXMLItem; const Name: string; const Value: TDateTime);
procedure XmlAddDateTimeParam(ANode: TXMLItem; const Name: string; const Value: TDateTime);
procedure XmlAddFontStyleParam(ANode: TXMLItem; const Name: string; const Value: TFontStyles);
// ------------ Поиск и извлечение информации из XML -----------
function XmlFindParam(ANode: TXMLItem; const Name: string): Integer;
function XmlFindNodeIndex(AParentNode: TXMLItem; const Name: string): Integer;
function XmlFindNode(AParentNode: TXMLItem; const Name: string): TXMLItem;
function XmlGetStringParam(ANode: TXMLItem; const Name, Default: string): string;
function XmlGetIntegerParam(ANode: TXMLItem; const Name: string; const Default: Integer): Integer;
function XmlGetCardinalParam(ANode: TXMLItem; const Name: string; const Default: Cardinal): Cardinal;
function XmlGetColorParam(ANode: TXMLItem; const Name: string; const Default: TColor): TColor;
function XmlGetBoolParam(ANode: TXMLItem; const Name: string; const Default: Boolean): Boolean;
function XmlGetTimeParam(ANode: TXMLItem; const Name: string; Default: TDateTime): TDateTime;
function XmlGetDateParam(ANode: TXMLItem; const Name: string; Default: TDateTime): TDateTime;
function XmlGetDateTimeParam(ANode: TXMLItem; const Name: string; Default: TDateTime): TDateTime;
function XmlGetFontStyleParam(ANode: TXMLItem; const Name: string; Default: TFontStyles): TFontStyles;
// ------------------------- Прочие функции --------------------
function FindNamedItem(AParentNode: TXMLItem; const Name: string; const FromIndex: Integer = 0): TXMLItem;
Могу угостить.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Skyer (статус: Посетитель), 19 августа 2009, 20:40 [#20]:
min@y™ Можешь выложить плиз компонент со свои модулем???? А то со скачиванием компонента проблемы. Заранее спасибо
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|