Пятница, 29.03.2024, 12:07
Приветствую Вас Гость

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

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

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Форум » Delphi » Создание mp3 плеера на Delphi » Установочный файл + ассоциирование файлов
Установочный файл + ассоциирование файлов
Filo$oFДата: Понедельник, 21.05.2012, 07:45 | Сообщение # 16
Лейтенант
Группа: Пользователи
Сообщений: 61
Репутация: 2
Статус: Offline
MuLtLaNdIa,
В том пока нет ассоциации, поэтому и не добавляются в плейлист smile
 
xaramamburuДата: Понедельник, 21.05.2012, 10:11 | Сообщение # 17
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Filo$oF,
Попробуйте переименовать ваше приложение, вполне возможно, что с этим именем в Windows уже есть какая то ассоциация.)))
 
Filo$oFДата: Понедельник, 21.05.2012, 12:37 | Сообщение # 18
Лейтенант
Группа: Пользователи
Сообщений: 61
Репутация: 2
Статус: Offline
Работает. smile
Только всё ровно не добавляет таким способом выделенные файлы. Только один первый.
 
xaramamburuДата: Понедельник, 21.05.2012, 12:42 | Сообщение # 19
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Filo$oF,
за комментируйте вот этот блок в процедуре procedure TForm_player.wmcopydata(var msg: twmcopydata); :

if flag then //проверяем флаг разрешения на очистку плейлиста
begin
ListBox1.Clear;//вызов процедуры очистки плейлиста. Вы должны вставить свою.
flag:=false;//Выключаем флаг, иначе при каждом полученном параметре будет очищаться плейлист
timer3.Enabled:=true;//запускаем таймер
end;
и проверьте будут ли добавляться файлы.))))
 
Filo$oFДата: Понедельник, 21.05.2012, 12:54 | Сообщение # 20
Лейтенант
Группа: Пользователи
Сообщений: 61
Репутация: 2
Статус: Offline
xaramamburu,

Нет, всё так же. sad
 
xaramamburuДата: Понедельник, 21.05.2012, 12:56 | Сообщение # 21
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Filo$oF,
Скидывайте исходник, посмотрю. Судя по всему у вас не передаются данные из файла проекта в основной модуль.)))
 
xaramamburuДата: Понедельник, 21.05.2012, 13:44 | Сообщение # 22
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Filo$oF,
Уберите все, что вы за комментировали выше. Скомпилируйте ваш проект и проверьте его работу на другом компьютере, потому что проект с компилировался без проблем и файлы нормально добавляются. Проверял под Windows XP. Скажите куда, могу скинуть скомпилированный проект на проверку.)))
 
KikoДата: Вторник, 22.05.2012, 11:31 | Сообщение # 23
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Offline
Windows 7
Всё отлично работает, НО только если программа уже открыта. Если плеер не запущен и песню/песни открыть 2 щелчком/кнопкой открыть и т.п. происходит/не происходит следующее
1) вылетает ошибка 'Ошибка загрузки файла'
2) Плей-лист не отчищается
3) В плей-лист добавляется только одна песня (если открывать несколько)
4) Сама не воспроизводится (то есть надо нажимать на кнопку play, а не автоматически)
Ну а если программа уже запущена, то всё нормально работает.
В чём может быть проблема?


 
xaramamburuДата: Вторник, 22.05.2012, 13:34 | Сообщение # 24
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Kiko,
Код полностью рабочий. Ищите проблему в процедуре OnCreate формы. Именно тот модуль, который вы туда добавили отвечает за загрузку песни при двойном клике. Попробуйте переставить этот модуль в конец процедуры.)))
 
KikoДата: Вторник, 22.05.2012, 17:36 | Сообщение # 25
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Offline
что за.. eek и правда, переместил в конец и всё заработало. Правда вот с этим таймером :\ как ни менял, а стабильности всёравно нет,пытаюсь сразу 15 открыть раз через два открывает нормально,в другие разы.. то 7 то 12 то вообще 1 sad . Ну а вообщем отлично) спасибо up

 
Filo$oFДата: Пятница, 06.07.2012, 16:38 | Сообщение # 26
Лейтенант
Группа: Пользователи
Сообщений: 61
Репутация: 2
Статус: Offline
xaramamburu

Подскажите..
В общем, такая проблема возникла: у меня динамически создаваемые плейлисты (мы уже обсуждали это на форуме smile ) и если программа запущена, то файлы через ассоциацию открываются нормально - добавляются и воспроизводятся. Но, если плеер не запущен и попытатся открыть фаил, то выдаёт ошибку, связанную с памятью - не удалось прочитать и прочее.
 
xaramamburuДата: Пятница, 06.07.2012, 17:34 | Сообщение # 27
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Filo$oF,
Потому что при запуске плейлисты еще не созданы и программа не знает куда добавлять треки. Если у вас плейлист находится на главной форме проверяйте в событии OnCreate формы количество передаваемых параметров if paramcount=0 then ... грузим из ini файла else создаем новый плейлист и грузим в него. Если плейлист создан на отдельной форме, то используйте событие OnShow главной формы. Как то так.))))))
 
Filo$oFДата: Пятница, 06.07.2012, 18:16 | Сообщение # 28
Лейтенант
Группа: Пользователи
Сообщений: 61
Репутация: 2
Статус: Offline
xaramamburu

Вот так?

Code

if paramcount=0 then begin
//загрузка плейлиста
  Count_List:=IniFile.ReadInteger('ItemsCountList','Count_List',0);
if  Count_List<>0 then
begin
for nl:=0 to Count_List-1 do
  begin
   //считываем имя плейлиста
     Name_List:=IniFile.ReadString('NameList', 'Name' + IntToStr(nl+1),'Ошибка чтения');
    //создаем плей листы
     TSCreate(Name_List);
    //количество записей в плейлисте
    Count:=IniFile.ReadInteger('ItemsCount','Count'+inttostr(nl+1),0);
  if Count<>0 then
   begin
    for n := 0 to Count - 1 do
     List[nl].Items.Add(IniFile.ReadString('PlayList'+inttostr(nl+1), 'file' + IntToStr(n+1),'Ошибка чтения'));
//установка на первую запись плейлиста
     Filename:=List[nl].Items.Strings[0];
     List[nl].ItemIndex:=0;
end else begin
     SetLength(TS, Length(TS) + 1);
     TS[High(TS)] := TRzTabSheet.Create(RzPageControl1);
     TS[High(TS)].PageControl := RzPageControl1;
     TS[High(TS)].Caption := Name_List;
     TS[High(TS)].Tag:= High(TS);
     SetLength(List, Length(List) + 1);
     TS[High(TS)].OnShow:=TabSheetShow;
     List[High(List)] := TRzListBox.Create(TS[High(TS)]);
     List[High(List)].Parent := TS[High(TS)];
     List[High(List)].Align := alClient;
     List[High(List)].ShowItemHints := False;
     List[High(List)].Color := clActiveCaption;
     List[High(List)].BorderStyle:=bsNone;
     List[High(List)].onDrawItem := DrawItem;
     List[High(List)].Style:= lbOwnerDrawFixed;
     List[High(List)].OnDblClick:= ListBoxDblClick;
     List[High(List)].OnMouseDown:= ListMouseDown;
     List[High(List)].PopupMenu:=PopupMenu1;
     List[High(List)].MultiSelect :=True;
     RzPageControl1.ActivePage:=TS[High(TS)];
List[number_list].Clear;
  //получаем передаваемый параметр и добавляем его в плейлист
  List[number_list].Items.Add(Paramstr(1));
  //Получаем имя файла для проигрывания
  Filename:=List[number_list].Items.Strings[0];
  //Выделяем строку в ListBox
  List[number_list].ItemIndex:=0;
  //здесь вызываем процедуру проигрывания песни;
  // для примеров из урока это можно сделать так:
  Player;
  Vivod;
   end;
  end;
end;
end;
end;


Ошибка пропала, но плейлист не создаётся.
 
xaramamburuДата: Пятница, 06.07.2012, 20:57 | Сообщение # 29
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Filo$oF,
Попробуй после else begin написать:
TSCreate('Лист1');
List[number_list].Clear;
//получаем передаваемый параметр и добавляем его в плейлист
List[number_list].Items.Add(Paramstr(1));
//Получаем имя файла для проигрывания
Filename:=List[number_list].Items.Strings[0];
//Выделяем строку в ListBox
List[number_list].ItemIndex:=0;
//здесь вызываем процедуру проигрывания песни;
// для примеров из урока это можно сделать так:
Player;
Vivod;
end;
И описывай более подробно, что значит плейлист не создается? Создается ли TabSheet? Плейлист? или он создается, но в него не добавляется трек? smile
 
Filo$oFДата: Пятница, 06.07.2012, 23:04 | Сообщение # 30
Лейтенант
Группа: Пользователи
Сообщений: 61
Репутация: 2
Статус: Offline
xaramamburu,
Проверю чуть позже, сейчас возможности нет. smile

TabSheet не создаётся и ошибок ни каких нет. Но я кажется понял почему это происходит.

Добавлено (06.07.2012, 23:04)
---------------------------------------------
Нет, всё равно не не создаёт TabSheet.

Я пробовал вынести загрузку плейлиста из ini в отдельную процедуру, а в onCreate после

if paramcount=0 then
begin


просто подключил её

Code
if paramcount=0 then
  begin
LoadList;
end else begin
TSCreate('Лист1');  
  List[number_list].Clear;  
  //получаем передаваемый параметр и добавляем его в плейлист  
  List[number_list].Items.Add(Paramstr(1));  
  //Получаем имя файла для проигрывания  
  Filename:=List[number_list].Items.Strings[0];  
  //Выделяем строку в ListBox  
  List[number_list].ItemIndex:=0;  
  //здесь вызываем процедуру проигрывания песни;  
  // для примеров из урока это можно сделать так:  
  Player;  
  Vivod;  
  end;


Но тогда вылазит куча одних и тех же ошибок с текстом: Access violation at address 0050F143 in module 'Project1.exe'. Read of address 00000310.
После чего программа закрывается.

Эта же ошибка появлялась ранее, я про неё писал в первых постах, но тогда она вылазила единожды, и выскакивала вновь лишь при попытке закрыть программу. А сам плеер работал нормально, только плейлисты из ini не загружались.
 
Форум » Delphi » Создание mp3 плеера на Delphi » Установочный файл + ассоциирование файлов
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:


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