Воскресенье, 22.10.2017, 05:39
Приветствую Вас Гость

Не ошибается тот, кто ничего не делает.
Но и ничего не делать - ошибка.

Эмиль Кроткий

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 7 из 8«125678»
Форум » Delphi » Создание mp3 плеера на Delphi » Как работать с плейлистом в delphi на библиотеке BASS.DLL? (разбираем работу с плейлистом на delphi)
Как работать с плейлистом в delphi на библиотеке BASS.DLL?
SteamДата: Четверг, 11.10.2012, 20:09 | Сообщение # 91
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
Выкладываю вам замечательную функцию, которая обрезает строку в середине:
Code
function MinimizeText(const Text: String; Canvas: TCanvas;
    Width: Integer): string;
var
    TmpStr: String;
    Len: Integer;
    I: Integer;
    FirstPart, SecondPart: String;
begin
    TmpStr := Text;
    Len := Length(TmpStr);
    FirstPart := '';
    SecondPart := '';
    I := 1;
    if Canvas.TextWidth(TmpStr) > Width then
      TrackName.ShowHint := True
    else
      TrackName.ShowHint := False;
    while Canvas.TextWidth(TmpStr) > Width do
    begin
      FirstPart := LeftStr(Text, (Len div 2) - I);
      SecondPart := RightStr(Text, (Len div 2) - I);
      TmpStr := FirstPart+'....'+SecondPart;
      Inc(I);
    end;
    Result := TmpStr;
end;

В uses прописать StrUtils
Я использовал эту функцию так, при отрисовке DrawItem ListBox'а,
Code
Text := ChangeFileExt(ExtractFileName(MinimizeText(Text, PlayList.Canvas,
              PlayList.Width + 130)), '');

А если пользователь будет изменять размер формы, то при OnResize формы пишем:
Code
ListBox.Refresh;


Сообщение отредактировал Steam - Четверг, 11.10.2012, 22:50
 
trolololДата: Суббота, 10.11.2012, 20:07 | Сообщение # 92
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
как прорисовывать битрейт? везде пишет 1 kbps

function TForm2.GetKBPS(Channel3: DWORD): integer;
var
FloatLen: FLOAT;
Length: Int64;
len: integer;
begin
Length:= 0;
Length:= BASS_ChannelGetLength(Channel3, BASS_POS_BYTE);

if Length < 0 then Length:= 0;
FloatLen:= BASS_ChannelBytes2Seconds(Channel3, Length);
len:=BASS_StreamGetFilePosition(Channel3, BASS_FILEPOS_END);
Result:= Round(len / (125 * FloatLen) + 0.5);
Bass_StreamFree(Channel3);
end;

TextOut(Rect.Left + 10, Rect.Top+15, (form2.Tag(form2.sListbox1.Items[index]).freq) + ' / ' + IntToStr (GetKbps(form2.sListbox1.Itemindex))+' kbps');

что я не так делаю?
 
xaramamburuДата: Воскресенье, 11.11.2012, 18:52 | Сообщение # 93
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
trololol,
Сказать в чем у вас ошибка сложно так, как это только часть кода. Но судя по всему вы не получаете дескриптор канала Channel3. То есть в начале надо сделать так:
//освобаждаем канал
BASS_StreamFree(Channel1);
//пытаемся загрузить файл и получить дескриптор канала
Channel3 := BASS_StreamCreateFile(FALSE, PChar(FileName1), 0, 0, 0 {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
Как и в случае с получением ID3 тегов. Но лучше объединить функцию получения тегов и битрейта в одну например как сделано здесь:
http://basicsprog.ucoz.ru/forum/4-4-149-16-1338403355 для получения частоты дискретизации KHz. Сразу хочу предупредить, если песен в плейлисте будет очень много он будет тормозить при прорисовке. Поэтому частоту дискретизации, битрейт ну и т.д. лучше выводить отдельно, например на информационную панель при проигрывании трека, а не в плейлист. )))))))))))
 
trolololДата: Воскресенье, 11.11.2012, 19:18 | Сообщение # 94
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
спасибо большое! пытался сделать как Вы сказали, не получилось, привязал к частоте, все заработало!
только пришлось в конце функции убрать "+0.5" иначе вместо 320 показывало 321 kbps smile
 
VladДата: Вторник, 24.09.2013, 20:44 | Сообщение # 95
Лейтенант
Группа: Пользователи
Сообщений: 57
Репутация: 0
Статус: Offline
xaramamburu, хочу, чтобы в листбоксе отображались исполнитель и название. но система не распознает функцию readID3Tag. что делать?
 
xaramamburuДата: Среда, 25.09.2013, 18:25 | Сообщение # 96
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Хотеть не вредно.))) Решений несколько:
1. Написать функцию самому.
2. Найти готовую.
3. Найти готовый модуль по извлечению ID3Tag тегов.
и т.д.
Смотрите начало темы http://basicsprog.ucoz.ru/forum/4-4-54-16-1336503950 там есть от чего оттолкнуться.))))
 
VladДата: Суббота, 05.10.2013, 23:46 | Сообщение # 97
Лейтенант
Группа: Пользователи
Сообщений: 57
Репутация: 0
Статус: Offline
у меня получилось вывести теги на лейблы, но с плейлистом так и не разобрался. попытаюсь отправить Вам мой проект на email.

Добавлено (05.10.2013, 23:46)
---------------------------------------------
только скажите мне свой email, или скажите, где он указан

 
xaramamburuДата: Воскресенье, 06.10.2013, 12:17 | Сообщение # 98
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Цитата (Vlad)
у меня получилось вывести теги на лейблы, но с плейлистом так и не разобрался. попытаюсь отправить Вам мой проект на email.

Вы предлагаете мне разбираться с вашим плейлистом?
 
VladДата: Воскресенье, 06.10.2013, 12:47 | Сообщение # 99
Лейтенант
Группа: Пользователи
Сообщений: 57
Репутация: 0
Статус: Offline
xaramamburu, зачем, я хотел чтоб вы посмотрели код
 
xaramamburuДата: Воскресенье, 06.10.2013, 12:56 | Сообщение # 100
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
xaramamburu@list.ru только пишите на, что я должен  посмотреть, а то копаться с чужими проектами нет особого желания, да и времени.))))
 
VladДата: Суббота, 12.10.2013, 21:54 | Сообщение # 101
Лейтенант
Группа: Пользователи
Сообщений: 57
Репутация: 0
Статус: Offline
в большинстве плееров, в плейлисте присутствуют 2 полосы выделения. одна двигается при выделении проигрываемой песни, другая появляется при клике по ней. как это реализовать на listbox?
 
xaramamburuДата: Суббота, 12.10.2013, 23:32 | Сообщение # 102
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Смотрите здесь http://basicsprog.ucoz.ru/forum/4-4-265-16-1349196051 да и вообще в интернете полно информации по отрисовке в ListBox, ищите включайте мозг и переделывайте под ваши нужды.)))
 
VladДата: Суббота, 21.12.2013, 00:01 | Сообщение # 103
Лейтенант
Группа: Пользователи
Сообщений: 57
Репутация: 0
Статус: Offline
после долгих мучений у меня получилось вывести теги в плейлист, но есть один нюанс - если в песне теги не заложены, то там отображается пустое место. можно ли вместо них хотя бы имя файла вывести??
 
xaramamburuДата: Суббота, 21.12.2013, 20:05 | Сообщение # 104
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Проверяйте, если тег пустой, то выводите что нибудь другое.)))
 
VladДата: Вторник, 24.12.2013, 21:22 | Сообщение # 105
Лейтенант
Группа: Пользователи
Сообщений: 57
Репутация: 0
Статус: Offline
я понял что это делается через функцию if, но как это реализовать?
 
Форум » Delphi » Создание mp3 плеера на Delphi » Как работать с плейлистом в delphi на библиотеке BASS.DLL? (разбираем работу с плейлистом на delphi)
Страница 7 из 8«125678»
Поиск:


Copyright MyCorp © 2017Конструктор сайтов - uCoz