|
楼主 |
发表于 2020-7-15 09:45:01
|
显示全部楼层
问题好像不是出在这里
ufoprc
delphi中是没有C/C++的位字段的(VB同理,所以它是用integer)
由于在C中PSTATE_NOW为指针,所以delphi中要这样定义
function GetKHTState(port:integer; var state:word):integer;stdcall; external 'mtudll.DLL' name 'GetKHTState';
然后,将state分别用and和shr来得到各个状态的值
var
state:word;
i:integer;
ifTel,ifRing,ifError,ifDtmf,dtmf,hd:integer;
begin
i:=GetKHTState(1,state);
Edit1.Text:=inttostr(i);
ifTel:=state and 1;
ifRing:=(state shr 1) and 1;
ifError:=(state shr 2) and 1;
ifDtmf:=(state shr 3) and 1;
dtmf:=(state shr 4) and $f;
hd:=(state shr 8) and $ff;
试了
所有位都是0,因为是整型数,初始就是0,所以实际什么都没有返回
用他们给的VB来写的程序可以得到整数4098,二进制为1000000000010
就是ifRing位为1
为什么用DELPHI就是得不到返回数呢 |
|