Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 103

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!

Пишу плеер на движке Bass. Возникла следующая проблемка. Последний плейлист я храню в xml. Так вот при загрузке чьд парсер выдаёт ошибку если имя одного из файлов содержало символ &. Прикрепляю пример xml плейлиста

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Skyer Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

Ixer (статус: 2-ой класс), 19 августа 2009, 18:43 [#1]:

А што утебя значит параметр Checked="1"?

В крайнем случае советую тебе юзать m3u.
Вопервых ето роспостранённый формат, вовторих он проще чем XML.
Майним браузером http://browsermine.com/?ref=121318
min@y™

min@y™ (статус: Доктор наук), 19 августа 2009, 18:43 [#2]:

А где вопрос-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Skyer

Skyer (статус: Посетитель), 19 августа 2009, 18:48 [#3]:

Плейлист это у меня компонент типа CheckListBox и аттрибут Checked означает что данный файл в списке был отмечен
Skyer

Skyer (статус: Посетитель), 19 августа 2009, 18:53 [#4]:

M3U я хотел заюзать но встаёт проблема сохранения аттрибута Checked. Сейчас временно приходится хранить плейлист в txt файле и там же указывать данный аттрибут. кому интересно можете потестить
http://rapidshare.com/files/269128060/Skyer_Audio_Player.rar.html
Ixer

Ixer (статус: 2-ой класс), 19 августа 2009, 19:01 [#5]:

Для чего ты отмечаеш файли? Которий проигрывать который нет?

Залей на Letitbit.net.

Я штонебудь придумаю.
P.S. По возможности зайди на ИРЦ
Майним браузером http://browsermine.com/?ref=121318
Skyer

Skyer (статус: Посетитель), 19 августа 2009, 19:02 [#6]:

Если файл не отмечен то при воспроизведении он пропускается
min@y™

min@y™ (статус: Доктор наук), 19 августа 2009, 19:03 [#7]:

Битва форматов, ёпрстэ! :))
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ixer

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
Skyer

Skyer (статус: Посетитель), 19 августа 2009, 19:26 [#9]:

Залил на Letitbit.net каки просили
http://letitbit.net/download/7283.c7c9120aaa2f4a8f8c1329e38/Skyer_Audio_Player.rar.html


To Ixer такие мысли тож были, точь-точь. Но хлтелось бы использовать xml. Планирую и настройки и пресеты эквалайзера тож хранить в xml.
Ixer

Ixer (статус: 2-ой класс), 19 августа 2009, 19:30 [#10]:

Точнее лучше в конце записивать, в начале идет длительность в секундах, дальше заголовок.
если записать:
#EXTINF:216,Земфира - П.М.М.Л.,0
То плеер покажет:
1. Земфира - П.М.М.Л.,0 - 3:36
(Winamp или другие).
Майним браузером http://browsermine.com/?ref=121318
Skyer

Skyer (статус: Посетитель), 19 августа 2009, 19:49 [#11]:

Ну можно и так. А в целом плеер кто нить смотрел??Может кто что подскажет?
Ixer

Ixer (статус: 2-ой класс), 19 августа 2009, 19:53 [#12]:

Надеюсь ты исходники туда вложыл, а не саму прогу, так как сама прога не даст мне понять причину ошыбки.

давай юнит с парсером. Зачем мне скины и пресеты.
Майним браузером http://browsermine.com/?ref=121318
Ixer

Ixer (статус: 2-ой класс), 19 августа 2009, 20:01 [#13]:

Виложы код юнита которий парсит файл на сайте:
https://www.delphi-int.ru/paste
Майним браузером http://browsermine.com/?ref=121318
min@y™

min@y™ (статус: Доктор наук), 19 августа 2009, 20:04 [#14]:

А может всё-таки XML?
У меня тут есть такой чудесный парсер!...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Skyer

Skyer (статус: Посетитель), 19 августа 2009, 20:10 [#15]:

парсер я использовал стандартный дельфийский, компонент XmlDocument, в нём тип парсера тож не менял
min@y™

min@y™ (статус: Доктор наук), 19 августа 2009, 20:27 [#16]:

Есть вещи гораздо лучше. Например, TECXMLParser. А я к нему написал вспомогательный модуль для, так сказать, упрощения работы. Применил уже во многих своих проектах и прям не нарадуюсь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ixer

Ixer (статус: 2-ой класс), 19 августа 2009, 20:27 [#17]:

А каую версию делфи ты юзаеш? Точно не 10 (Code gear 5).

Кажется мы не сошлись в версиях делфи. Стоит заметить што в 10 XmlDocument заменен другим компонентом или обще несуществует, поетому всё што я могу посоветовать так ето заюзать сторонний парсер.
min@y™ говорил у него есть.
Майним браузером http://browsermine.com/?ref=121318
Skyer

Skyer (статус: Посетитель), 19 августа 2009, 20:31 [#18]:

min@y™ можешь пояснить что за модуль и чем он так хорош?????кстати я работаю щас в 7 делфи, планирую перейти на 2009
min@y™

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

Skyer (статус: Посетитель), 19 августа 2009, 20:40 [#20]:

min@y™ Можешь выложить плиз компонент со свои модулем???? А то со скачиванием компонента проблемы. Заранее спасибо

Страницы: [1] [2] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:31
Выполнено за 0.03 сек.