请查看我的代码:
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
在某些情况下?
SetLength()
零initialialialialialsials分配的内存,所以是的,默认情况下,布尔值将始终是错误的。
是说,而不是完全重新分配数组,而是考虑手动重置布尔人:
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;