Firefox addon 你知道fillchar在做什么吗?

Firefox addon 你知道fillchar在做什么吗?,firefox-addon,jsctypes,Firefox Addon,Jsctypes,我正在从C++转换为JS cType,并且遇到了这个没有被这个人记录的函数。 fillchar fillchar(aButton,sizeof(aButton),0); 它也不在msdn上。你知道它在做什么吗 var aButton:TTBBUTTON; //Check if there's another button after this one. fillchar(aButton,sizeof(aButton),0); rez:=CallWindowProc(OldWndProc

我正在从C++转换为JS cType,并且遇到了这个没有被这个人记录的函数。
fillchar

fillchar(aButton,sizeof(aButton),0);
它也不在msdn上。你知道它在做什么吗

 var aButton:TTBBUTTON;
 //Check if there's another button after this one.
 fillchar(aButton,sizeof(aButton),0);
 rez:=CallWindowProc(OldWndProc,hToolbar,TB_GETBUTTON,ButtonIndex+1,integer(@aButton));
 HaveBehind:=(rez<>0) and (not HasFlag(aButton.fsStyle,BTNS_DROPDOWN));

看起来像是
Delphi
code。事实上,Delphi有一个与您的示例签名相匹配的函数,并且从上下文来看也是有意义的
FillChar
只是C
memset
的另一个实现

因此,给定
FillChar

fillchar(aButton,sizeof(aButton),0);
相当于

memset(aButton, 0, sizeof(aButton));
// Or ZeroMemory(aButton, sizeof(aButton));
这意味着它只将整个内容设置为
0
字节


如中所述,对于新的js ctypes结构实例,您可以跳过此步骤,因为js ctypes会为您初始化内存。

谢谢!我不明白你说的“跳过这个”是什么意思?因为在另一个主题中,我们做了
var a=ctypes.uint8\u t.array()(10)memset(a,0xde,a.length)。我们能跳过什么?确切地你的意思是我们可以跳过
memset(aButton,0,aButton.size())
,因为它与执行
var aButton=new Struct\u TBButton
var aButton=ctypes.uint8\u.array()(此处的一些编号)
?PS:我不认为js有一个
sizeof
是这样的,它应该是
aButton.length
?如果a)你将结构/数组设置为0s,b)结构/数组是由js ctypes分配的,其他情况下不使用,你可以跳过memset。js ctypes将自动用0填充结构/数组的新实例。例如,将缓冲区字节设置为0xde(不是0s),这样就不能忽略。啊,是的,在那个例子中,它被设置为222,对,我制作了这个十六进制计算器来帮助我处理所有这些js ctypes垃圾()。我现在知道了,所以如果我们想做
memset(废话,>>>>>>>0Yes,如果设置为0,就跳过。Yes 0xde(十六进制)==222(十进制)。Sht当我试图提问时,我得到了“你在30天内只能问50个问题。”哈哈哈