Вверх ↑
Этот топик читают: Гость
Ответов: 1926
Рейтинг: 172
#1: 2015-03-27 20:11:33 ЛС | профиль | цитата
code_35387.txt

При нажатии второй кнопки после первой программа вылетает, хотя файл нормально воспроизводится. Причём такое только на mp3, wav - нормально. В чём причина? (Имя файла такое, потому что копировал случайный mp3-файл в папку, чтоб были только латинские символы, думал, проблема в этом). WinXP.
карма: 9
0
файлы: 1code_35387.txt [1.3KB] [386]
Ответов: 196
Рейтинг: 43
#2: 2015-03-27 21:05:19 ЛС | профиль | цитата
Win7x64 полёт нормальный. А если попробовать без wait? Или перед Close попробовать:
mciSendString('STOP AGD',nil,0,0);

карма: 2

0
Ответов: 1926
Рейтинг: 172
#3: 2015-03-27 22:07:51 ЛС | профиль | цитата
halt, пробовал - аналогично. Более того, даже на стандартном компоненте при doClose mp3 вылетает прога:

code_35388.txt

Иногда вылетает на wma. На wav и avi - нормально.
------------ Дoбавленo в 21.26:
А также: если по code_35388.txt открыть несколько файлов mp3 один за другим - тоже на каком-либо файле вылеатет прога - без ошибки, без всего - просто закрывается, и всё. Я понимаю, что в коде doPlay тоже есть вызов close перед пуском, видимо, из-за этого.

Может ли быть проблема в кодеках? Стоит K-lite Mega Codec Pack 9.9.5.
------------ Дoбавленo в 21.43:
Кажется, нашёл проблему: LAV Splitter в кодеках! Снимаешь там галку с mp3 - прога не вылетает!
------------ Дoбавленo в 22.07:
Да, проверил несколько раз: проблема в LAV Splitter! Я снял галки с mp3 и avi (почему-то на мою wma-ху действует avi! Может, это мой файл такой кривой? В любом случае...) - прога не вылетает!
карма: 9
0
файлы: 1code_35388.txt [324B] [380]
Ответов: 8928
Рейтинг: 823
#4: 2015-03-27 22:13:34 ЛС | профиль | цитата
3042, да нормально работает (Win7-64)
карма: 19

0
Ответов: 1926
Рейтинг: 172
#5: 2015-03-29 21:15:13 ЛС | профиль | цитата
Столкнулся ещё с одной проблемой:
Add(InlineCode,16304893,273,168)
{
@Hint=#21:Проигрывание и запись|
WorkPoints=#8:doRecord|
EventPoints=#10:onProgress|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,mmsystem,windows;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|14: fn:string;|54: function ErrStr(e:integer):boolean; //true - error|9: public|25: onProgress:THI_Event;|0:|49: procedure doRecord(var dt:TData; index:word);|0:|5: end;|0:|14:implementation|0:|62:function THiAsmClass.ErrStr(e:integer):boolean; //true - error|29:var d:array [0..255] of char;|5:begin|21: if e <> 0 then begin|36: mciGetErrorString(e,@d,sizeof(d));|48: MessageBox(ReadHandle,d,'Ошибка',MB_ICONHAND);|40: mciSendString('close AGD', nil, 0, 0);|5: end;|18: Result := e <> 0;|4:end;|0:|0:|31:procedure THiAsmClass.doRecord;|29:var s:array [0..255] of char;|17: e,lr:integer;|5:begin|16: fn := '12.wav';|0:|75: e := mciSendString(PChar('open new type waveaudio alias AGD'), nil, 0, 0);|24: if ErrStr(e) then exit;|0:|72: e := mciSendString('set AGD time format milliseconds format tag pcm ' +|72: 'bitspersample 16 channels 1 samplespersec 44100 ' +|65: 'alignment 2 bytespersec 88200' , nil, 0, 0);|24: if ErrStr(e) then exit;|0:|60: e := mciSendString(PChar('record AGD to 5122'), nil, 0, 0);|24: if ErrStr(e) then exit;|0:|7: repeat|55: mciSendString('status AGD length', @s, sizeof(s), 0);|29: _hi_OnEvent(onProgress, s);|53: mciSendString('status AGD mode', @s, sizeof(s), 0);|25: Applet.ProcessMessages;|12: sleep(20);|21: until s = 'stopped';|28: _hi_OnEvent(onProgress, 0);|58: mciSendString(PChar('save AGD "' + fn + '"'), nil, 0, 0);|39: mciSendString('close AGD', nil, 0, 0);|4:end;|0:|4:end.|
link(onProgress,3028542:doAdd,[])
}
Add(Button,8594245,203,168)
{
Left=155
Top=10
link(onClick,16304893:doRecord,[])
}
Add(ListBox,3028542,343,168)
{
Left=5
Top=5
Width=140
Height=265
AddType=1
}

При записи выдаёт секунды*1000 на прогресс, а не миллисекунды! Хотя при проигрывании файла аналогичный код выдаёт именно миллисекунды. Почему так, что делать?
------------ Дoбавленo в 21.15:
Ребят, 100 просмотров темы - и ни одного решения (пост №5)!
карма: 9
0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)