Вверх ↑
Ответов: 1926
Рейтинг: 172
#1: 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