Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
iwanenko
9 / 9 / 0
Регистрация: 09.05.2011
Сообщений: 25
#1

Как поставить в Mp3 плеере на кнопку окрытие не одного mp3 файла ?? - Delphi

23.05.2011, 00:11. Просмотров 1387. Ответов 9
Метки нет (Все метки)

Привет ! У меня такая проблема я пишу mp3 плеер на Delphi и у меня в нём есть кнопка открытия файлов и при окрытии mp3 файлов можно открыть только один ! а мне надо чтобы можно было открыть их много ! поможите чем ?? я проэкт прикрепляю !!!!! можите ответить сдесь или Вконтакте

http://www.cyberforum.ru/delphi/thread497812.html

1
Вложения
Тип файла: rar MP3.rar (1.10 Мб, 42 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2011, 00:11
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как поставить в Mp3 плеере на кнопку окрытие не одного mp3 файла ?? (Delphi):

Кто-нибуть знает, как извлечь ин-ию из mp3 файла?
Я хочу сделать БД на Delphi, точнее уже сделал. База данных по учету mp3 файлов...

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

ScrollBar в MP3 плеере
Здравствуйте, решил написать MP3 плеер на Bass.dll. Столкнулся с такой...

Длительность mp3 файла
Собственно вопрос банальный, как узнать длительность трека? В вики нашел...

Как определить длительность Mp3 файла. MP3 плеер на библиотеке BASS 2.4
В процессе поиска ответов я наткнулся на эту тему...

9
i8085
1663 / 1179 / 234
Регистрация: 11.09.2009
Сообщений: 4,199
23.05.2011, 04:00 #2
Не считая данной ветки:
iwanenko: http://www.cyberforum.ru/delphi/thread300925.html
iwanenko: http://www.cyberforum.ru/delphi/thread300721.html
iwanenko: http://www.cyberforum.ru/delphi/thread300097.html
iwanenko: Плей лист в Delphi
iwanenko: Немогу сделать Плей Лист в Delphi
iwanenko: Плей Лист на Delphi с bass.dll неполучаеться

Вы сами себе вредите, плодя темы с одним и тем же вопросом.
Во-первых, это вызывает неудовольствие форумчан - слишком вас много,
во вторых - тема не развивается и вы не получаете ответов.
Посмотрите свой список - там как минимум пара ответов, а вы плодите всё новые и новые...
то есть, люди тратили своё время, а их ответы вам не нужны?
0
iwanenko
9 / 9 / 0
Регистрация: 09.05.2011
Сообщений: 25
23.05.2011, 07:56  [ТС] #3
Это вобщето другой вопрос !!!! прочти внемательно и посмотри другие !! В прошлых вопросах я спрашивал про плейЛист я щас , как поставить на кнопку неограниченое открытие музыкальных файлов !! народ помогите !!
1
Mawrat
12821 / 5729 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
23.05.2011, 09:40 #4
Составить список файлов (список имён файлов) можно так:
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
uses
  FileCtrl;
 
var
  gsDir : String;
 
procedure TForm1.Button1Click(Sender: TObject);
const
  //Массив, содержащий перечень интересующих расширений файлов.
  ArrExt : array[1..2] of String = ('.MP3', '.WAV');
var
  Sr : TSearchRec;
  sDir, sExt : String;
  i : Integer;
  F : Boolean;
begin
  sDir := gsDir;
  if sDir = '' then
    sDir := ExtractFilePath(ParamStr(0));
 
  //Диалог открытия папки.
  if not SelectDirectory(sDir, [sdAllowCreate, sdPerformCreate, sdPrompt], 0) then Exit;
  if not DirectoryExists(sDir) then begin
    ShowMessage('Папка с указанным именем не существует. Действие отменено.');
    Exit;
  end;
  sDir := IncludeTrailingPathDelimiter(sDir);
  gsDir := sDir;
  
  Memo1.Clear;
  Memo1.Lines.Add('Папка: ' + sDir);
  try
    if FindFirst(sDir + '*', faAnyFile, Sr) = 0 then repeat
      //Пропускаем папки.
      if (Sr.Attr and faDirectory) = faDirectory then Continue;
      //Расширение найденного файла.
      sExt := AnsiUpperCase( ExtractFileExt(Sr.Name) );
      //Проверяем, принадлежит ли расширение перечню расширений.
      F := False;
      for i := Low(ArrExt) to High(ArrExt) do begin
        if sExt = ArrExt[i] then begin
          F := True;
          Break;
        end;
      end;
      //Если расширение входит в перечень, то добавляем имя файла в список.
      if F then Memo1.Lines.Add(Sr.Name);
    until FindNext(Sr) <> 0;
  finally
    FindClose(Sr);
  end;
end;
0
iwanenko
9 / 9 / 0
Регистрация: 09.05.2011
Сообщений: 25
23.05.2011, 20:50  [ТС] #5
Mawrat, Не , мне надо чтобы при нажатии можно было открыть много файлов может поможешь?? качни проэкт ! посмотри!
1
Mawrat
12821 / 5729 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
23.05.2011, 21:16 #6
iwanenko, что имеется в виду под "открыть много файлов"? Может быть требуется настроить TOpenDialog так, чтобы можно было выбирать сразу множество файлов? Это делается так:
1. Устанавливается свойство:
TOpenDialog.Options := TOpenDialog.Options + [ofAllowMultiSelect] - Разрешён одновременный выбор множества файлов. Это свойство можно задать через инспектор объектов:
TOpenDialog - Options - ofAllowMultiSelect = True.
2. Множество выбранных файлов помещаются в свойство TOpenDialog.Files - это свойство является потомком класса TStrings.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  i : Integer;
  FileName : String;
begin
  if not OpenDialog1.Execute then Exit;
  //Перебор всех выбранных файлов.
  for i := 0 to OpenDialog1.Files.Count - 1 do begin
    //Имя очередного файла.
    FileName := OpenDialog1.Files[i];
    ...
    ...
    ...
  end;
...
end;
0
iwanenko
9 / 9 / 0
Регистрация: 09.05.2011
Сообщений: 25
24.05.2011, 10:28  [ТС] #7
Mawrat, Что-то у меня неполучаеться ! попробуй ты в проэкте сделать !? залей потом сюды ! а то у меня ошибки кажет ! плизз ! срочняк надо !если тебе нетрудно !) жду...

Добавлено через 11 часов 22 минуты
Mawrat, НУ так чё поможешь ?
1
Mawrat
12821 / 5729 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
24.05.2011, 15:19 #8
Вечером посмотрю проект.
0
iwanenko
9 / 9 / 0
Регистрация: 09.05.2011
Сообщений: 25
24.05.2011, 21:14  [ТС] #9
Надеюсь на твою помощь !

Добавлено через 14 минут
Mawrat, вс я сам сделал спс тебе ! напиши мне Вконтакте вопрос задать нужно но тока не сдесь ! http://vkontakte.ru/publicv
1
Mawrat
12821 / 5729 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
25.05.2011, 02:55 #10
Я добавил изменения в проект, в соответствие со своим видением.
Архив с проектом залил на файлообменник - ссылку и пароль кинул в личку.
---
Для читателей форума, в контексте темы, опубликую часть кода, связанного с выбором группы файлов, добавлением в список элементов с данными о файлах и удалением из списка.
В качестве списка применён TListView.
---
Для определения места положения папок: "...\Мои документы" и "...\Мои документы\Моя музыка" применён вызов API функции: SHGetSpecialFolderPath (SHGetSpecialFolderPathA).
---
Модуль главной формы.
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
...
interface
...
 
type
  //Структура для хранения дополнительных данных, связанных
  //с элементами списка TListView.
  TItemData = record
    //Полное имя файла.
    FullFileName : String;
  end;
  TPItemData = ^TItemData;
 
const
  //Флаг для папки "...\Мои документы" текущего пользователя.
  CSIDL_MYDOCUMENTS : Integer = $C;
  //Флаг для папки "...\Мои документы\Моя музыка" текущего пользователя.
  CSIDL_MYMUSIC : Integer = $D;
 
//Импорт функции определения пути к специальным папкам - Мои документы, Моя музыка, Windows, Common Files и пр.
function _SHGetSpecialFolderPath(const hwndOwner : HWND; const lpszPath : PChar; const csidl : Integer; const fCreate : BOOL) : BOOL; stdcall;
  external 'Shell32.dll' name 'SHGetSpecialFolderPathA';
 
//Обёртка для функции _SHGetSpecialFolderPath.
function SHGetSpecialFolderPath(const hwndOwner : HWND; var lpszPath : String; const csidl : Integer; const fCreate : Boolean) : Boolean;
 
...
 
implementation
 
...
 
//Выбор одного или группы файлов, добавление элементов с данными об этих файлах в список
//воспроизведения. В конце запускается воспроизведение первого файла из добавленной группы.
procedure TfrmMain.btnOpenClick(Sender: TObject);
var
  sPath, sFileName : String;
  ListItem, ListItem1 : TListItem;
  PItemData : TPItemData;
  i : Integer;
  Od : TOpenDialog;
begin
  Od := dlgOpen;
 
  //Если начальная папка для диалога не определена, задаём её.
  if Od.InitialDir = '' then begin
    //Попытка получить путь к папке "...\Мои документы\Моя музыка".
    if SHGetSpecialFolderPath(0, sPath, CSIDL_MYMUSIC, False) then
    //Попытка получить путь к папке "...\Мои документы".
    else if SHGetSpecialFolderPath(0, sPath, CSIDL_MYDOCUMENTS, False) then
    //Случай, когда путь к вышеуказанным папкам определить не удалось.
    else begin
      //Путь к папке, где лежит исполняемый файл программы.
      sPath := ExtractFilePath(ParamStr(0));
    end;
    //sPath := IncludeTrailingPathDelimiter(sPath);
    Od.InitialDir := sPath;
  end;
 
  //Если пользователь в диалоге выбрал отмену - выходим.
  if not Od.Execute then Exit;
  //Если не выбран ни один файл - выходим.
  if Od.Files.Count = 0 then Exit;
 
  ListItem1 := nil;
  //Перебор всех выбранных имён файлов и добавление их в список.
  for i := 0 to Od.Files.Count - 1 do begin
    sFileName := Od.Files[i];
    //Добавляем элемент в список.
    ListItem := PlForm.ListView1.Items.Add;
    //Заголовок, который будет виден в списке.
    //Например, запишем здесь имя файла без пути.
    ListItem.Caption := ExtractFileName(sFileName);
    //Создаём структуру для хранения дополнительных сведений.
    New(PItemData);
    //Записываем полное имя файла в структуру.
    PItemData^.FullFileName := sFileName;
    //Прикрепляем структуру к данным элемента.
    ListItem.Data := PItemData;
 
    //Запоминаем первый из добавляемых элементов.
    if i = 0 then ListItem1 := ListItem;
  end;
 
  //Запускаем воспроизведение самого первого из выбранных файлов.
  if not PlayFile(ListItem1) then begin
    ShowMessage('Не удалось запустить воспроизведение.');
  end;
end;
Модуль формы списка.
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
...
implementation
...
 
//Удаление из списка воспроизведения выделенных элементов.
procedure TPlForm.btnRemoveClick(Sender: TObject);
var
  i : Integer;
  Lv : TListView;
  PItemData : TPItemData;
begin
  Lv := ListView1;
  //Если нет выделенных элементов - выходим.
  if Lv.SelCount = 0 then Exit;
  //Удаление из памяти дополнительных данных для всех выделенных
  //элементов списка. И удаление самих выделенных элементов списка.
  for i := Lv.Items.Count - 1 downto 0 do begin
    if not Lv.Items[i].Selected then Continue;
    PItemData := Lv.Items[i].Data;
    //Удаление из памяти строки.
    Finalize(PItemData^.FullFileName);
    //Удаление из памяти структуры.
    Dispose(PItemData);
    //Удаление элемента из списка.
    Lv.Items.Delete(i);
  end;
end;
1
25.05.2011, 02:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2011, 02:55
Привет! Вот еще темы с решениями:

Как сделать автостарт в mp3 плеере
Многоуважаемые програмисты, помогите с кодом mp3 плеера Нужно сделать так...

Приветствие в mp3 плеере Samsung U5
Доброго времени суток! Кто знает как изменить приветствие на mp3 плеере Samsung...

Сортировка файлов в mp3 плеере
Есть проблемка с плеером: файлы сортируются не по имени, а по дате создания....

Вирус на mp3 плеере! не могу удалить...
У меня mp3 плеер TrekStor i.Beat nova идёт без драйверов, без USB кабеля...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru