Установочный файл + ассоциирование файлов
|
|
Filo$oF | Дата: Понедельник, 21.05.2012, 07:45 | Сообщение # 16 |
Лейтенант
Группа: Пользователи
Сообщений: 61
Статус: Offline
| MuLtLaNdIa, В том пока нет ассоциации, поэтому и не добавляются в плейлист
|
|
| |
xaramamburu | Дата: Понедельник, 21.05.2012, 10:11 | Сообщение # 17 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| Filo$oF, Попробуйте переименовать ваше приложение, вполне возможно, что с этим именем в Windows уже есть какая то ассоциация.)))
|
|
| |
Filo$oF | Дата: Понедельник, 21.05.2012, 12:37 | Сообщение # 18 |
Лейтенант
Группа: Пользователи
Сообщений: 61
Статус: Offline
| Работает. Только всё ровно не добавляет таким способом выделенные файлы. Только один первый.
|
|
| |
xaramamburu | Дата: Понедельник, 21.05.2012, 12:42 | Сообщение # 19 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: 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
Статус: Offline
| xaramamburu,
Нет, всё так же.
|
|
| |
xaramamburu | Дата: Понедельник, 21.05.2012, 12:56 | Сообщение # 21 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| Filo$oF, Скидывайте исходник, посмотрю. Судя по всему у вас не передаются данные из файла проекта в основной модуль.)))
|
|
| |
xaramamburu | Дата: Понедельник, 21.05.2012, 13:44 | Сообщение # 22 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| Filo$oF, Уберите все, что вы за комментировали выше. Скомпилируйте ваш проект и проверьте его работу на другом компьютере, потому что проект с компилировался без проблем и файлы нормально добавляются. Проверял под Windows XP. Скажите куда, могу скинуть скомпилированный проект на проверку.)))
|
|
| |
Kiko | Дата: Вторник, 22.05.2012, 11:31 | Сообщение # 23 |
Рядовой
Группа: Пользователи
Сообщений: 5
Статус: Offline
| Windows 7 Всё отлично работает, НО только если программа уже открыта. Если плеер не запущен и песню/песни открыть 2 щелчком/кнопкой открыть и т.п. происходит/не происходит следующее 1) вылетает ошибка 'Ошибка загрузки файла' 2) Плей-лист не отчищается 3) В плей-лист добавляется только одна песня (если открывать несколько) 4) Сама не воспроизводится (то есть надо нажимать на кнопку play, а не автоматически) Ну а если программа уже запущена, то всё нормально работает. В чём может быть проблема?
|
|
| |
xaramamburu | Дата: Вторник, 22.05.2012, 13:34 | Сообщение # 24 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| Kiko, Код полностью рабочий. Ищите проблему в процедуре OnCreate формы. Именно тот модуль, который вы туда добавили отвечает за загрузку песни при двойном клике. Попробуйте переставить этот модуль в конец процедуры.)))
|
|
| |
Kiko | Дата: Вторник, 22.05.2012, 17:36 | Сообщение # 25 |
Рядовой
Группа: Пользователи
Сообщений: 5
Статус: Offline
| что за.. и правда, переместил в конец и всё заработало. Правда вот с этим таймером :\ как ни менял, а стабильности всёравно нет,пытаюсь сразу 15 открыть раз через два открывает нормально,в другие разы.. то 7 то 12 то вообще 1 . Ну а вообщем отлично) спасибо
|
|
| |
Filo$oF | Дата: Пятница, 06.07.2012, 16:38 | Сообщение # 26 |
Лейтенант
Группа: Пользователи
Сообщений: 61
Статус: Offline
| xaramamburu
Подскажите.. В общем, такая проблема возникла: у меня динамически создаваемые плейлисты (мы уже обсуждали это на форуме ) и если программа запущена, то файлы через ассоциацию открываются нормально - добавляются и воспроизводятся. Но, если плеер не запущен и попытатся открыть фаил, то выдаёт ошибку, связанную с памятью - не удалось прочитать и прочее.
|
|
| |
xaramamburu | Дата: Пятница, 06.07.2012, 17:34 | Сообщение # 27 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| Filo$oF, Потому что при запуске плейлисты еще не созданы и программа не знает куда добавлять треки. Если у вас плейлист находится на главной форме проверяйте в событии OnCreate формы количество передаваемых параметров if paramcount=0 then ... грузим из ini файла else создаем новый плейлист и грузим в него. Если плейлист создан на отдельной форме, то используйте событие OnShow главной формы. Как то так.))))))
|
|
| |
Filo$oF | Дата: Пятница, 06.07.2012, 18:16 | Сообщение # 28 |
Лейтенант
Группа: Пользователи
Сообщений: 61
Статус: 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
Статус: 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? Плейлист? или он создается, но в него не добавляется трек?
|
|
| |
Filo$oF | Дата: Пятница, 06.07.2012, 23:04 | Сообщение # 30 |
Лейтенант
Группа: Пользователи
Сообщений: 61
Статус: Offline
| xaramamburu, Проверю чуть позже, сейчас возможности нет.
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 не загружались.
|
|
| |
|