导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2020/11/2 9:26:28
标题:
加入我的收藏
楼主:
// BASS_DEVICEINFO flags BASS_DEVICE_ENABLED = 1; // open BASS_DEVICE_DEFAULT = 2; // select BASS_DEVICE_INIT = 4; // init ... BASS_DEVICE_TYPE_MASK = $ff000000; BASS_DEVICE_TYPE_NETWORK = $01000000; BASS_DEVICE_TYPE_SPEAKERS = $02000000; 现在的返回值(flags)是 BASS_DEVICE_TYPE_SPEAKERS + 2 + 1 我怎么写判断?
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
2020/11/2 9:44:44
1楼:
if a and b = a then 刚才代码的确我写错了。现在改了。
----------------------------------------------
(C)(P)Flying Wang
作者:
2020/11/2 9:45:31
2楼:
@wang_80919 没看懂。
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
hs_kill (lzl_17948876)
★☆☆☆☆
-
普通会员
2020/11/2 9:51:33
3楼:
if flags and BASS_DEVICE_ENABLED = BASS_DEVICE_ENABLED then //包括BASS_DEVICE_ENABLED
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
2020/11/2 9:51:39
3楼:
你的问题我也没看懂。 我猜测了一下你的问题,给的答案 可能和你的问题无关。
----------------------------------------------
(C)(P)Flying Wang
作者:
hs_kill (lzl_17948876)
★☆☆☆☆
-
普通会员
2020/11/2 9:52:17
4楼:
去学习下位运算相关知识
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
2020/11/2 10:23:11
5楼:
@hs_kill 还有一个呢? 它有很多种包括。 BASS_DEVICE_TYPE_SPEAKERS + 2 + 1
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
hs_kill (lzl_17948876)
★☆☆☆☆
-
普通会员
2020/11/2 10:25:00
6楼:
一个一个的判断啊
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
2020/11/2 10:25:37
6楼:
现在的问题是flags = BASS_DEVICE_TYPE_SPEAKERS + BASS_DEVICE_DEFAULT + BASS_DEVICE_ENABLED 我怎么判断? flags = BASS_DEVICE_TYPE_SPEAKERS + BASS_DEVICE_DEFAULT flags = BASS_DEVICE_TYPE_SPEAKERS + BASS_DEVICE_ENABLED flags = BASS_DEVICE_TYPE_SPEAKERS + BASS_DEVICE_INIT flags = BASS_DEVICE_TYPE_SPEAKERS + BASS_DEVICE_INIT + BASS_DEVICE_ENABLED 。。。 无数种可能。
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
2020/11/2 10:27:46
7楼:
@hs_kill 一个个判断, 根本无法写啊, 很多种可能。
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
hs_kill (lzl_17948876)
★☆☆☆☆
-
普通会员
2020/11/2 10:42:34
8楼:
.....只判断一个啊 你的flags值不是相加的么 其实就是位操作里的or 所以无论你flags是什么 你需要判断哪个值就用flags 去and哪个值判断结果 都说了, 先去了解下位操作相关资料
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
2020/11/2 10:50:13
9楼:
另外 不要用 + ,一定要用 OR 否则 加多了,就错了。 必须一个一个的判断。 但是你可以吧需要判断的内容放 数组里。 写一个循环判断。 if (a[i] and b) = a[i] then begin a[i] 可以干吗,我就不知道了。 end;
----------------------------------------------
(C)(P)Flying Wang
作者:
2020/11/2 11:10:12
10楼:
@hs_kill有没有这种写法? (flags || BASS_DEVICE_TYPE_SPEAKERS || BASS_DEVICE_DEFAULT)= true? 只要符合任意一种就真?
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
csm55 (鹰扬天下)
★☆☆☆☆
-
盒子活跃会员
2020/11/2 11:10:27
10楼:
1个字节里有8bit, bit[0]表示有没open,bit[1]表示有没select,bit[2]有没init 如果你要判断bit[0]位是不是1,只要这样判断 if value and 1 = 1 then showmessage('bit[0]位为1') 如果你要判断bit[1]位是不是1,只要这样判断 if value and 2 = 2 then showmessage('bit[1]位为1') 如果你要判断bit[2]位是不是1,只要这样判断 if value and 4 = 4 then showmessage('bit[2]位为1') 如果你要判断 bit[0,1,2]是不是都为1,这样判断 if value and (1+2+4) = (1+2+4) then showmessage('bit[0,1,2]位为1') and:只要两个bit位都为1时,结果才为1 好久没玩进制了,好像是这样,你自己试验下 还有一个,多个组合: 1 or 2 or 4 = 1+2+4
----------------------------------------------
——做人,为什么要过于执著?! ——做人,干嘛为难自己?! ——做人,先要相信自己。——做人,依靠自己!——做人,量力而行。——做人,记得反省自己。——做人,何妨放手一搏。——做人,要活在当下。
作者:
2020/11/2 11:12:59
11楼:
a[] 这个数组里放你 说的 ,只要有,就为真的,项目。不想有的,不放。 IsHas := False; if (a[i] and b) = a[i] then begin IsHas := True; break; end; if IsHas then 另外 千万不要用 +,一定要用 or 代替。
----------------------------------------------
(C)(P)Flying Wang
作者:
2020/11/2 11:17:10
12楼:
if (x or y or z) and b <> 0 then 这个也是 x y z 在 b 中有任意一个存在,就为真。 但是 从理解方面,我感觉 上一个回复,更容易。这个 就算是知道 位运算 也不一定能理解。
----------------------------------------------
(C)(P)Flying Wang
作者:
2020/11/2 11:19:34
13楼:
@wang_80919 我试试。 其实这是bass里面的定义, 我现在是想判断设备的类型, // BASS_DEVICEINFO flags BASS_DEVICE_ENABLED = 1; // open BASS_DEVICE_DEFAULT = 2; // select BASS_DEVICE_INIT = 4; // init ... BASS_DEVICE_TYPE_MASK = $ff000000; BASS_DEVICE_TYPE_NETWORK = $01000000; BASS_DEVICE_TYPE_SPEAKERS = $02000000; BASS_DEVICE_TYPE_LINE = $03000000; BASS_DEVICE_TYPE_HEADPHONES = $04000000; BASS_DEVICE_TYPE_MICROPHONE = $05000000; BASS_DEVICE_TYPE_HEADSET = $06000000; BASS_DEVICE_TYPE_HANDSET = $07000000; BASS_DEVICE_TYPE_DIGITAL = $08000000; BASS_DEVICE_TYPE_SPDIF = $09000000; BASS_DEVICE_TYPE_HDMI = $0a000000; BASS_DEVICE_TYPE_DISPLAYPORT = $40000000;
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
2020/11/2 11:22:12
14楼:
flags 返回值默认是+BASS_DEVICE_ENABLED 的, 也就是加1, 举个例子吧。 flags = 31 (默认) flags = 33 (加了1和2) flags = 37 (加了1和2和4) BASS_DEVICE_TYPE_SPEAKERS = 30 现在就是怎么判断 flags = BASS_DEVICE_TYPE_SPEAKERS ?
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
2020/11/2 11:22:39
14楼:
BASS_DEVICE_TYPE_NETWORK = $01000000; BASS_DEVICE_TYPE_SPEAKERS = $02000000; BASS_DEVICE_TYPE_LINE = $03000000; 这 3 个,好像有问题。 $01 or $02 = $03 还有其他的也有这种问题。 感觉 他不是 最合适的 位运算。 比如 BASS_DEVICE_TYPE_MICROPHONE 这个设备一旦存在, 你可能同时认为 BASS_DEVICE_TYPE_HEADPHONES 和 BASS_DEVICE_TYPE_NETWORK 都存在。 如果设备不能 复合存在的话,建议直接 用 if a = 某设备类型 then 如果 是可以 混合存在的。那就只能 用 if a and 某设备类型 = 某设备类型 then if a and (BASS_DEVICE_TYPE_HEADPHONES or BASS_DEVICE_TYPE_LINE) <> 0 then 这时候 就可能会发生错误。 因为 BASS_DEVICE_TYPE_NETWORK 也会 得出 这个结果。
----------------------------------------------
(C)(P)Flying Wang
作者:
hs_kill (lzl_17948876)
★☆☆☆☆
-
普通会员
2020/11/2 11:28:29
15楼:
他这个应该是BASS_DEVICE_TYPE_NETWORK..BASS_DEVICE_TYPE_DISPLAYPORT是设备类型, 只有唯一值 BASS_DEVICE_ENABLED BASS_DEVICE_DEFAULT BASS_DEVICE_INIT是可以叠加的 所以 如果想判断设备类型 可以使用下面的办法判断 case flags and BASS_DEVICE_TYPE_MASK of BASS_DEVICE_TYPE_NETWORK: BASS_DEVICE_TYPE_SPEAKERS: BASS_DEVICE_TYPE_LINE: BASS_DEVICE_TYPE_HEADPHONES: BASS_DEVICE_TYPE_MICROPHONE: BASS_DEVICE_TYPE_HEADSET: BASS_DEVICE_TYPE_HANDSET: BASS_DEVICE_TYPE_DIGITAL: BASS_DEVICE_TYPE_SPDIF: BASS_DEVICE_TYPE_HDMI: BASS_DEVICE_TYPE_DISPLAYPORT: end 还是最开始的话, 先了解位操作相关知识, 说了半天告诉楼主怎么写 楼主还是不明白为什么要这么写
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
2020/11/2 11:28:53
15楼:
@wang_80919 有些设备是双重功能的, 比如蓝牙耳机, 就有输入功能。 但我看设备表, 是有两个设备, 返回的flags 不一样。 BASS_DEVICE_TYPE_HEADPHONES = $04000000; BASS_DEVICE_TYPE_MICROPHONE = $05000000;
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
2020/11/2 11:29:45
16楼:
@hs_kill 谢谢你的代码, 我试试。
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
2020/11/2 11:32:31
16楼:
根据 两个 15 楼的 回复。 感觉 设备类型 不是 复合的。 一个设备 他的类型 就一种,用 case 或 = 都可以。但是 不能用 and 。
----------------------------------------------
(C)(P)Flying Wang
作者:
2020/11/2 11:34:35
17楼:
case flags and BASS_DEVICE_TYPE_MASK of 类型1, //注意是逗号 类型2, 类型3: //这个是 冒号 begin end; 类型4, 类型5: begin end; 类型6: begin end;//这里有分号。 else //其他设备 begin end; end;
----------------------------------------------
(C)(P)Flying Wang
作者:
2020/11/2 12:57:07
18楼:
@wang_80919 谢谢, 经过测试, 成功了。 if (vt.flags and BASS_DEVICE_TYPE_MASK) = BASS_DEVICE_TYPE_LINE then BASS_DEVICE_TYPE_LINE 其实是虚拟声卡, 名字看是输入, 其实是可以输出给它的。 不过, 现在还有个问题, 不好区分哪个是带声音输出的。 BASS_DEVICE_TYPE_MASK = $ff000000; BASS_DEVICE_TYPE_NETWORK = $01000000; BASS_DEVICE_TYPE_SPEAKERS = $02000000; BASS_DEVICE_TYPE_LINE = $03000000; BASS_DEVICE_TYPE_HEADPHONES = $04000000; BASS_DEVICE_TYPE_MICROPHONE = $05000000; BASS_DEVICE_TYPE_HEADSET = $06000000; BASS_DEVICE_TYPE_HANDSET = $07000000; BASS_DEVICE_TYPE_DIGITAL = $08000000; BASS_DEVICE_TYPE_SPDIF = $09000000; BASS_DEVICE_TYPE_HDMI = $0a000000; BASS_DEVICE_TYPE_DISPLAYPORT = $40000000;
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
2020/11/2 13:27:38
19楼:
BASS_DEVICE_TYPE_LINE 这几个字母,哪里表达了 输入? 可能,你需要雇一个计算机英语翻译。
----------------------------------------------
(C)(P)Flying Wang