为什么Delphi
布尔变量在global scope is false
中初始化,变量在local scope is true
初始化?
我们可以更改任何默认值,以便both (global and local variables)
在初始化时具有相同的值吗?
示例代码
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
bool1:boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
bool :boolean;
begin
if bool then
label1.Caption:='true'
else
label1.caption:='false';
if bool1 then
label2.Caption:='true'
else
label2.caption:='false';
end;
end.
这会将结果显示为
其中true is label1 and false is label2
答案 0 :(得分:18)
实际上没有初始化局部变量,但是全局变量和对象字段被初始化为零(对于布尔变量,这意味着'false')。
因此,您必须自己初始化局部变量,如果不这样做,编译器甚至会生成警告。
您还应该查看Delphi documentation变量。
答案 1 :(得分:2)
全局变量总是初始化为零 - 在布尔值中表示为false。程序和方法中的局部变量根本没有初始化。您需要自己为它们分配值。