Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/30: Рейтинг темы: голосов - 30, средняя оценка - 4.63
禁止
 Аватар для FromOutSide
13 / 11 / 2
Регистрация: 04.09.2014
Сообщений: 230

Вывод списка mp3 файлов и их воспроизведение

13.06.2017, 10:30. Показов 7059. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я искал на форуме, находил что-то похожее, но не нашел то что нужно.
Нужно на delphi 7:
Чтобы выводился список в listbox, всех mp3 файлов в папках и подпапках допустим есть папки:
d:\music\album1\album1.1
d:\music\album1\album1.2
d:\music\album2\album2.1
Ну а вписывать можно или название лишь файла или с полным путем, но при этом стерев два первых символа пути
music1.mp3
\music\album1\album1.2\music1.mp3
\music\album2\album2.1\music1.mp3
Т.е. как бы весь путь, с полным именем
Возможности:Полоса перемотки. И через bitbtnЫ вкл, пауза, след, пред.
Для меня подобные процедуры, непонятны, так что прошу Вас, с комментариями к кодам. Ну или пинайте меня в нужную сторону
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.06.2017, 10:30
Ответы с готовыми решениями:

Воспроизведение Mp3 файла
MediaPlayer2.Wait := False; MediaPlayer2.DeviceType := dtAutoSelect; MediaPlayer2.FileName := '031320135.mp3' ; try if not...

Возможно ли сделать поочерёдное воспроизведение mp3 из файла ресурсов?
Всем привет! Хотел сделать проигрыватель mp3 и вшить его в один из своих проектов. Создал файл с ресурсами, подключил, запускаю,...

Получение списка mp3 файлов на сайте и их поочередное воспроизведение
Inv.DS давал такой код: Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long Private Sub...

50
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
22.06.2017, 17:09
Студворк — интернет-сервис помощи студентам
у тебя расширение не используется при непосредственно поиске. у тебя ищутся ВСЕ файлы, а затем отфильтровываются нужные по расширению. найти 1000 файлов, из них будет 10 нужных
А вы думаете FindFirst это иначе делает? Сильно сомневаюсь, пойду проверю ради эксперимента скорость получения с фильтром и без.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
22.06.2017, 21:12
Цитата Сообщение от Пытливый Посмотреть сообщение
А вы думаете FindFirst это иначе делает?
я думаю, FindFirst через API работает с файловой системой, не создавая промежуточных списков
0
禁止
 Аватар для FromOutSide
13 / 11 / 2
Регистрация: 04.09.2014
Сообщений: 230
24.06.2017, 11:50  [ТС]
Вот, всё!
Работает!
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, MPlayer, StdCtrls, jpeg;
 
type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    MediaPlayer1: TMediaPlayer;
    Timer1: TTimer;
    TrackBar1: TTrackBar;
    ListBox2: TListBox;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    ListBox3: TListBox;
    procedure PP;
    Procedure FindFileInFolder(path, ext: string);
    procedure playnext;
    procedure playprev;
    procedure TrackBar1Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Image2Click(Sender: TObject);
    procedure Image5Click(Sender: TObject);
    procedure Image3Click(Sender: TObject);
    procedure Image4Click(Sender: TObject);
    procedure ListBox2DblClick(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure ListBox3DblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
 
var
  Form1: TForm1;
   CurrentIndex: integer = -1;
   CurrentIndex2: integer = -1;
   str:string;
 
implementation
 
{$R *.dfm}
 
 
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
If TrackBar1.Position<>mediaplayer1.Position
then begin
mediaplayer1.Position:=TrackBar1.Position;
mediaplayer1.Play;
end;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if MediaPlayer1.FileName<>''
then begin
TrackBar1.Max:=mediaplayer1.Length;
TrackBar1.Position:=mediaplayer1.Position;
end else exit;
end;
 
procedure TForm1.PP;
begin
CurrentIndex:= ListBox2.ItemIndex;
if CurrentIndex <> -1 then
begin
if MediaPlayer1.FileName <> '' then MediaPlayer1.Close;
MediaPlayer1.FileName:= ListBox1.Items[CurrentIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
timer1.Enabled:=true;
TrackBar1.Enabled:=true;
end;
end;
 
procedure TForm1.FindFileInFolder(path, ext: string);
Var
SR : TSearchRec;
Res : Integer;
begin
Res := FindFirst(path+ext, faAnyFile, SR);
while Res = 0 do
begin
form1.ListBox1.Items.Add(path+Sr.Name);
form1.ListBox2.Items.Add(Sr.Name);
Res := FindNext(SR);
end;
FindClose(SR);
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if MediaPlayer1.FileName <> '' then MediaPlayer1.Close;
end;
 
procedure TForm1.playnext;
begin
if CurrentIndex = -1 then Exit;
if (CurrentIndex < ListBox2.Count-1)
then Inc (CurrentIndex)
else CurrentIndex:= 0;
ListBox2.ItemIndex:= CurrentIndex;
PP;
end;
 
procedure TForm1.playprev;
begin
if CurrentIndex = -1 then Exit;
if (CurrentIndex > 0)
then Dec(CurrentIndex)
else CurrentIndex:= ListBox2.Count-1;
ListBox2.ItemIndex:= CurrentIndex;
PP;
end;
 
procedure TForm1.Image2Click(Sender: TObject);
begin
playprev;
end;
 
procedure TForm1.Image5Click(Sender: TObject);
begin
if MediaPlayer1.FileName <> '' then MediaPlayer1.Pause else exit;
end;
 
procedure TForm1.Image3Click(Sender: TObject);
begin
PP;
end;
 
procedure TForm1.Image4Click(Sender: TObject);
begin
playnext;
end;
 
procedure TForm1.ListBox2DblClick(Sender: TObject);
begin
pp;
end;
 
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile('i.jpg');
end;
 
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile('i2.jpg');
end;
 
procedure TForm1.ListBox3DblClick(Sender: TObject);
begin
if MediaPlayer1.FileName<>'' then MediaPlayer1.Close;
if ListBox2.items.Text <> '' then ListBox2.Items.clear;
CurrentIndex2:= ListBox3.ItemIndex;
str:=ListBox3.Items[CurrentIndex2];
FindFileInFolder(str+'\', '*.mp3');
end; 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox3.Items.LoadFromFile('config.txt');
end;
 
end.
Пути заранее вносишь в текстовик, правда все пути, не получилось у меня иначе, так вышло дольше, но проще Ы)

Добавлено через 3 минуты
Цитата Сообщение от DenNik Посмотреть сообщение
Пы.Сы. наблюдаю некорректное поведение метода MediaPlayer.Stop - срабатывает как Пауза. т.е. файл потом продолжает воспроизводиться с того же места
Поддерживаю.
Цитата Сообщение от FromOutSide Посмотреть сообщение
Вот, поймал эти ошибки.
Первая ошибка опять себя проявила. Не пойму как, она в этот раз появилась при включении трека.

Добавлено через 22 часа 4 минуты
И всё же. Может кто знает как сделать так, чтобы выводились все пути всех папок, в том числе и подпапках в одной указанной папке? И по двойному щелчку на строку папки, в листбоксе, под этой строкой выводился список? Просто то, что сделано не годится (для меня норм, но условия поставлены иные).
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
24.06.2017, 13:20
Ну возьмите мой вариант, который я дал ранее и там флаг выставите flFolderToList. В список попадут и папки, а комбинацией флагов можно настроить отображение этого списка в любом виде.
0
禁止
 Аватар для FromOutSide
13 / 11 / 2
Регистрация: 04.09.2014
Сообщений: 230
24.06.2017, 15:02  [ТС]
Цитата Сообщение от Пытливый Посмотреть сообщение
Ну возьмите мой вариант
Ок, что нибудь попробую с этим сделать.

Добавлено через 2 минуты

Цитата Сообщение от Пытливый Посмотреть сообщение
flFolderToList
пока на глаз вообще ничего не понял =)
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
24.06.2017, 15:33
Все несложно. Обязательными являются только два флага flFileToList и flFolderToList. Если хотя-бы один из них не указан, то ничего в ListBox не запишется. Остальные флаги вспомогательные.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
26.06.2017, 09:59
Цитата Сообщение от FromOutSide Посмотреть сообщение
И по двойному щелчку на строку папки, в листбоксе, под этой строкой выводился список?
Пытливый, то что ему нужно - эта фишка есть в AIMP.

to FromOutSide: неужели ты думаешь, что для этого действия существует одна волшебная процедура? чтобы реализовать задуманное, нужно написать кучу кода. и тут уж воля и простор твоей фантазии, которая может быть ограничена лишь недостатком знаний языка программирования и IDE Delphi
0
禁止
 Аватар для FromOutSide
13 / 11 / 2
Регистрация: 04.09.2014
Сообщений: 230
26.06.2017, 10:27  [ТС]
Цитата Сообщение от DenNik Посмотреть сообщение
и тут уж воля и простор твоей фантазии, которая может быть ограничена лишь недостатком знаний языка программирования и IDE Delphi
Я сокращу =)
"и тут уж воля и простор твоей фантазии, которая ОГРАНИЧЕНА лишь недостатком знаний языка программирования и IDE Delphi."
В этом и есть вся проблема.
И нет
Цитата Сообщение от DenNik Посмотреть сообщение
одна волшебная процедура
Возможно
А так понимаю, может посоветуете что почитать, только без всего лишнего.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
26.06.2017, 11:07
Цитата Сообщение от FromOutSide Посмотреть сообщение
может посоветуете что почитать,
как работать с компонентом ListBox. тогда ты поймешь, что нужно
- обработать двойной щелчок на компоненте
-- считать индекс строки
-- если это представление пути файла, проиграть его
-- если это представление каталога, в котором находятся файлы, в зависимости от "статуса" сделать эмуляцию сворачивания/разворачивания
--- при "разворачивании" вставить новые строки -"представления" путей к файлам в этом каталоге
--- при "сворачивании" удалить нижележащие строки до следующего представления каталога либо до конца списка
и т.д.
0
禁止
 Аватар для FromOutSide
13 / 11 / 2
Регистрация: 04.09.2014
Сообщений: 230
26.06.2017, 12:58  [ТС]
Цитата Сообщение от DenNik Посмотреть сообщение
что нужно
на данный момент оно и нужно.
А так искал, читал, но ничего не понятно. Были представлены простые коды, ну это понятно что с них и начинается, но подобных связок, что делали Вы, не было.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
26.06.2017, 13:08
Цитата Сообщение от FromOutSide Посмотреть сообщение
подобных связок, что делали Вы, не было.
конечно, не было. это нестандартное решение нестандартной задачи
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.06.2017, 13:08

Вывод списка mp3 файлов в listview
Здравствуйте, недавно начал изучать котлин, и первым приложением решил сделать музыкальный плеер. Ранее никогда не работал с Java и...

Воспроизведение mp3 файлов
Как в лазарусе воспроизвести mp3 файл?

Воспроизведение mp3 файлов
Есть ли стандартная библиотека для воспроизведение mp3/wav файлов ?

Воспроизведение файлов mp3
Я написал не большую игру и решил добавить фоном в неё музыку но не знаю как подскажите желательно mp3.

Воспроизведение mp3 файлов.
Тут,проблем не возникает : Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
51
Ответ Создать тему
Новые блоги и статьи
Новая последнея моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru