|
Delphi + MP3 | ☑ | ||
---|---|---|---|---|
0
QarezZ
23.11.11
✎
19:58
|
Итак, при запуске качается MP3 файлик из инета, затем проигрывается. После этого должно быть повторение, но файл не удаляется, пишет, что он занят мною! Как его освободить/удалить?
|
|||
1
Лефмихалыч
23.11.11
✎
20:11
|
А что связывает все три предложения между собой?
|
|||
2
QarezZ
23.11.11
✎
20:16
|
>А что связывает все три предложения между собой?
-- Скачивание - сохранение - проигрывание - (второе повторение цикла) - скачивание - не удается сохранить (перезаписать) или удалить. |
|||
3
Капитан Смоллет
23.11.11
✎
20:19
|
||||
4
QarezZ
23.11.11
✎
20:20
|
||||
5
Лефмихалыч
23.11.11
✎
20:22
|
(2) потому, что ты файл не закрываешь.
юзай CloseFile() или чего там у вас в этих ваших обдолбаных дельфях |
|||
7
QarezZ
23.11.11
✎
20:23
|
(2) потому, что ты файл не закрываешь.
юзай CloseFile() или чего там у вас в этих ваших обдолбаных дельфях -- Нет переменной файла. Его BASS открывает. |
|||
8
Rie
23.11.11
✎
20:25
|
(7) Открывать-то открывает... А закрывать кто будет?
|
|||
9
andrewks
23.11.11
✎
20:25
|
про дестрой объекта ещё не говорили?
|
|||
10
QarezZ
23.11.11
✎
20:25
|
(7) Открывать-то открывает... А закрывать кто будет?
-- как? |
|||
11
QarezZ
23.11.11
✎
20:26
|
про дестрой объекта ещё не говорили?
-- а потом заново создавать? и как отвечать на пост? |
|||
12
Лефмихалыч
23.11.11
✎
20:26
|
(7) я в душе ниипу, кто этот BASS, но я ставлю дайм, что он умеет не только открывать файлы, но закрывать их.
И заказнчивай оверквотить - номера постав в скобках вполне достаточно для того, чтобы понять, на что ты отвечаешь |
|||
13
Rie
23.11.11
✎
20:26
|
(10) Ты код свой покажи. А то кто ж его знает, что ты там делаешь.
|
|||
14
Лефмихалыч
23.11.11
✎
20:27
|
(11) отвечать на пост очень просто: (НомерПоста) _ТУТ_ТЕКСТ_ОТВЕТА_
|
|||
15
QarezZ
23.11.11
✎
20:28
|
(13)
ПЛИЗ НЕ СМЕЙТЕСЬ! procedure TForm1.Button1Click(Sender: TObject); var LoadStream: TMemoryStream; i: boolean; a, b: integer; o: string; Flags: TReplaceFlags; begin CreateDir('cache'); randomize; b := random(1000000); o := StringReplace(Application.Exename, 'read.exe', '', Flags); LoadStream := TMemoryStream.Create; IdHTTP1.Get('ссылка', LoadStream); IdHTTP1.Disconnect; LoadStream.SaveToFile('cache\' + IntToStr(b) + '.mp3'); BASS_PlaySoundFile('cache\' + IntToStr(b) + '.mp3'); LoadStream.Free; DeleteFile(o + 'cache\' + IntToStr(b) + '.mp3'); //вот тут нифига end; |
|||
16
andrewks
23.11.11
✎
20:32
|
а если строчку с BASS закомментить - даёт удалить?
|
|||
17
QarezZ
23.11.11
✎
20:34
|
(16) Да!
|
|||
18
Rie
23.11.11
✎
20:34
|
(15) Попробуй вместо BASS_PlaySoundFile использовать BASS_StreamCreateFile и BASS_ChannelPlay, а в конце - сказать BASS_ChannelStop
|
|||
19
QarezZ
23.11.11
✎
20:35
|
(18) сек, попробую
|
|||
20
QarezZ
23.11.11
✎
20:36
|
(18) ого там параметров! что в них надо писать?
|
|||
21
Rie
23.11.11
✎
20:36
|
(19) А если не получится - почитай документацию по BASS :-)
|
|||
22
Rie
23.11.11
✎
20:36
|
(20) см. (21)
|
|||
23
Rie
23.11.11
✎
20:36
|
+(18) И в конце BASS_StreamFree
|
|||
24
andrewks
23.11.11
✎
20:36
|
(17)а что в BASS_PlaySoundFile()?
|
|||
25
Лефмихалыч
23.11.11
✎
20:37
|
(15) читай мануал к инструменту ПЕРЕД использованием
http://www.un4seen.com/doc/bass/BASS_StreamFree.html вот из за таких школьников, дельфистов и зовут "Помогите найти компонент" |
|||
26
Лефмихалыч
23.11.11
✎
20:37
|
виноват... без вброса не получилось...
|
|||
27
Rie
23.11.11
✎
20:37
|
(24) А там и есть те вызовы, которые в (18) :-)
|
|||
28
QarezZ
23.11.11
✎
20:37
|
(24) Играет он кагбэ
|
|||
29
andrewks
23.11.11
✎
20:38
|
(28) ты не мудри, ты код кажи
|
|||
30
QarezZ
23.11.11
✎
20:38
|
(25) Никогда не просил найти компонент)
|
|||
31
QarezZ
23.11.11
✎
20:38
|
(29) function TForm1.BASS_PlaySoundFile(const FileName: string): Boolean;
var ChannelInfo: BASS_CHANNELINFO; begin Result:= False; Channel:= BASS_StreamCreateFile(False, PChar(FileName), 0, 0, 0); if (Channel <> 0) then ChannelType:= ctStream; if (Channel <> 0) then begin BASS_ChannelPlay(Channel, False); end; Result:= Channel <> 0; end; |
|||
32
Rie
23.11.11
✎
20:38
|
(28) Нет, он не "кагбэ играет". Он вызывает более другие функции, в которых самый прикол и есть.
|
|||
33
Лефмихалыч
23.11.11
✎
20:39
|
(30) просить почитать за тебя мануал, ИМХО, - еще срамнее
|
|||
34
Rie
23.11.11
✎
20:40
|
(33) Однако цели товарисч добился - мануал ему таки сюда запостили.
А что нехорошими словами шутили - так "плюнь в глаза - а ему божья роса". |
|||
35
QarezZ
23.11.11
✎
20:41
|
Лан, ок, последний вопрос. Как делать ChannelStop уже когда все проигралось?
|
|||
36
Rie
23.11.11
✎
20:42
|
(35) Иди читай мануал.
|
|||
37
QarezZ
23.11.11
✎
20:43
|
(36) не нашел
|
|||
38
Лефмихалыч
23.11.11
✎
20:44
|
(35) в мануале этот вопрос освещен.
Вызывай BASS_ChannelStop и передавай ему дескриптор канала, полученный от BASS_StreamCreateFile. (37) иди менять профессию тогда |
|||
39
andrewks
23.11.11
✎
20:44
|
если тебе в итоге файл на диске не нужен, проигрывай его вообще из памяти, не мусори на диске
|
|||
40
QarezZ
23.11.11
✎
20:46
|
Всем спс разобрался. Сделал так:
repeat BASS.BASS_ChannelStop(Channel); BASS.BASS_StreamFree(Channel); until BASS_StreamGetFilePosition(Channel, BASS_FILEPOS_END) <> BASS_StreamGetFilePosition(Channel, BASS_FILEPOS_CURRENT); |
|||
41
Rie
23.11.11
✎
20:48
|
(40) А это точно надо сначала канал уничтожить - а потом смотреть его позицию?
|
|||
42
andrewks
23.11.11
✎
20:48
|
sleep надо юзать
|
|||
43
QarezZ
23.11.11
✎
20:48
|
(41) фак, а как иначе?
|
|||
44
QarezZ
23.11.11
✎
20:48
|
(41) то есть как нормально
|
|||
45
Лефмихалыч
23.11.11
✎
20:51
|
(44) приди в сознание уже. Сам-то как думаешь?
|
|||
46
Rie
23.11.11
✎
20:52
|
(44) Твой цикл на первом же шаге перестанет его играть и прикончит. А только потом задумается - а надо ли это было делать?
Насчёт кошерности обращения к освобождённому ресурсу - я уж молчу. |
|||
47
QarezZ
23.11.11
✎
20:52
|
Все, готово.. Ну спс однако всем.
|
|||
52
pectopatop
23.11.11
✎
21:06
|
Хотя после фраз типа "Где это в мануале?" хочется закрыть нах страничку
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |