请查看我的代码:
var
b: array of Boolean;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(b,3); //All values are False by default
b[0]:=True;
//Do something here
SetLength(b,0);
SetLength(b,3);
end;
我测试了b[0]=False
。
我的问题:使用SetLength(b,0)
然后使用SetLength(b,n)
将所有值重置为默认值(False)的正确方法是吗?
是b[0]=False
还是所有情况下的True
?
答案 0 :(得分:3)
SetLength()
对它分配的内存进行零初始化,因此,是的,默认情况下,布尔值始终为False。
话虽如此,而不是完全重新分配数组,请考虑手动重置布尔值:
var
b: array of Boolean;
procedure TForm1.Button1Click(Sender: TObject);
var
I: integer;
begin
SetLength(b,3); //All values are False by default
b[0] := True;
//Do something here
for I := 0 to High(b) do
b[I] := False; // or Default(Boolean)
end;
或者,您可以使用FillChar()
或ZeroMemory()
用零填充分配的内存:
var
b: array of Boolean;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(b,3); //All values are False by default
b[0] := True;
//Do something here
ZeroMemory(@b[0], Length(b)); // or FillChar(b[0], Length(b), $0);
end;