我编译这个函数,有几个未知类型的错误,应该声明哪几个单元啊?
//-----------------------------------------------------------------------------------[Error] MainUnit.pas(60): Undeclared identifier: 'HACMDRIVERID'
[Error] MainUnit.pas(62): Undeclared identifier: 'HACMDRIVER'
[Error] MainUnit.pas(63): Undeclared identifier: 'TACMDRIVERDETAILS'
[Error] MainUnit.pas(65): Undeclared identifier: 'TACMFORMATTAGDETAILS'
[Error] MainUnit.pas(67): Undeclared identifier: 'ACMDRIVERDETAILS_SUPPORTF_CODEC'
[Error] MainUnit.pas(69): Missing operator or semicolon
[Error] MainUnit.pas(70): Undeclared identifier: 'acmDriverDetails'
[Error] MainUnit.pas(71): Undeclared identifier: 'acmDriverOpen'
[Error] MainUnit.pas(72): 'DO' expected but identifier 'cFormatTags' found
[Error] MainUnit.pas(75): Missing operator or semicolon
[Error] MainUnit.pas(76): Missing operator or semicolon
[Error] MainUnit.pas(77): Undeclared identifier: 'acmFormatTagDetails'
[Error] MainUnit.pas(77): Undeclared identifier: 'ACM_FORMATTAGDETAILSF_INDEX'
[Error] MainUnit.pas(78): ')' expected but identifier 'dwFormatTag' found
[Error] MainUnit.pas(100): Statement expected but 'PROCEDURE' found//--------------------------------------------------------------------------------function acmDriverEnumCallback(hadid: HACMDRIVERID; dwInstance: DWORD; fdwSupport: DWORD): BOOL; stdcall;
var
driver : HACMDRIVER;
details : TACMDRIVERDETAILS;
i : integer;
fmtDetails : TACMFORMATTAGDETAILS;
begin
if (fdwSupport and ACMDRIVERDETAILS_SUPPORTF_CODEC) <> 0 then
begin
details.cbStruct := sizeof(TACMDRIVERDETAILS);
acmDriverDetails(hadid, details, 0);
acmDriverOpen(driver, hadid, 0);
for i := 0 to details.cFormatTags - 1 do
begin
ZeroMemory(@fmtDetails, sizeof(fmtDetails));
fmtDetails.cbStruct := sizeof(TACMFORMATTAGDETAILS);
fmtDetails.dwFormatTagIndex := i;
acmFormatTagDetails(driver, fmtDetails, ACM_FORMATTAGDETAILSF_INDEX);
if (fmtDetails.dwFormatTag = WAVE_FORMAT_MPEGLAYER3) then inc(g_mp3Drivers);
end;
acmDriverClose(driver, 0);
end;
Result := true;
end;
//-----------------------------------------------------------------------------------[Error] MainUnit.pas(60): Undeclared identifier: 'HACMDRIVERID'
[Error] MainUnit.pas(62): Undeclared identifier: 'HACMDRIVER'
[Error] MainUnit.pas(63): Undeclared identifier: 'TACMDRIVERDETAILS'
[Error] MainUnit.pas(65): Undeclared identifier: 'TACMFORMATTAGDETAILS'
[Error] MainUnit.pas(67): Undeclared identifier: 'ACMDRIVERDETAILS_SUPPORTF_CODEC'
[Error] MainUnit.pas(69): Missing operator or semicolon
[Error] MainUnit.pas(70): Undeclared identifier: 'acmDriverDetails'
[Error] MainUnit.pas(71): Undeclared identifier: 'acmDriverOpen'
[Error] MainUnit.pas(72): 'DO' expected but identifier 'cFormatTags' found
[Error] MainUnit.pas(75): Missing operator or semicolon
[Error] MainUnit.pas(76): Missing operator or semicolon
[Error] MainUnit.pas(77): Undeclared identifier: 'acmFormatTagDetails'
[Error] MainUnit.pas(77): Undeclared identifier: 'ACM_FORMATTAGDETAILSF_INDEX'
[Error] MainUnit.pas(78): ')' expected but identifier 'dwFormatTag' found
[Error] MainUnit.pas(100): Statement expected but 'PROCEDURE' found//--------------------------------------------------------------------------------function acmDriverEnumCallback(hadid: HACMDRIVERID; dwInstance: DWORD; fdwSupport: DWORD): BOOL; stdcall;
var
driver : HACMDRIVER;
details : TACMDRIVERDETAILS;
i : integer;
fmtDetails : TACMFORMATTAGDETAILS;
begin
if (fdwSupport and ACMDRIVERDETAILS_SUPPORTF_CODEC) <> 0 then
begin
details.cbStruct := sizeof(TACMDRIVERDETAILS);
acmDriverDetails(hadid, details, 0);
acmDriverOpen(driver, hadid, 0);
for i := 0 to details.cFormatTags - 1 do
begin
ZeroMemory(@fmtDetails, sizeof(fmtDetails));
fmtDetails.cbStruct := sizeof(TACMFORMATTAGDETAILS);
fmtDetails.dwFormatTagIndex := i;
acmFormatTagDetails(driver, fmtDetails, ACM_FORMATTAGDETAILSF_INDEX);
if (fmtDetails.dwFormatTag = WAVE_FORMAT_MPEGLAYER3) then inc(g_mp3Drivers);
end;
acmDriverClose(driver, 0);
end;
Result := true;
end;
解决方案 »
- 根据Sender如何找到控件的指针(迷糊死了)
- 华东理工的编程人进来!群6213544!方便交流!~有意者加入啊!
- 如何把sql server里的数据库表的结构存到另一个表上。只有80分了!
- 深夜了,在线等待!!!很急!!!!!!!!
- 能否让COM服务器返回一个ADO的数据集
- ■■[调查]您用Linux搞开发了吗?请大家帮忙UP!
- 关于Dll的问题
- 超级难题!!!为什么用LAME 转WAV TO MP3 时,对于所有采样精度为8BIT 的转换全部失败?哪个参数是预设置采样精度的?
- 关于网络游戏的外挂(例:石器时代/金庸),是如何开发出来的,涉及哪些技术,有没类似的源码可供下载参考的?求助~...
- 请问哪有好的image控件?delphi6自带的那个浏览bmp时图片上半部全黑!!!
- 你认为pascal语言有什么长处和不足?
- 请教 OpenGL 显示汉字的办法
建议楼主去找msacm.pas文件,获者直接看这里.
http://www.programmersheaven.com/download/2734/0/ZipView.aspx
我在工程里添加了 msacm.pas,编译后,还有个类型错误
[Error] MainUnit.pas(78): Undeclared identifier: 'WAVE_FORMAT_MPEGLAYER3'怎么办啊 谢谢
WAVE_FORMAT_MPEGLAYER3 = $0055;
参考至MMReg.pas
http://flocke.vssd.de/prog/apps/pascal/mp3conv/cur/MMReg.pas.html
你是不是刚学delphi呀。
mmreg.pas也是一个必须的文件,如果你想做格式转换。这个定义文件会让你省很多时间。先把这个找齐了再慢慢玩吧