Delphi布尔变量值

时间:2011-11-18 06:56:01

标签: delphi initialization boolean

为什么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

2 个答案:

答案 0 :(得分:18)

实际上没有初始化局部变量,但是全局变量和对象字段被初始化为零(对于布尔变量,这意味着'false')。

因此,您必须自己初始化局部变量,如果不这样做,编译器甚至会生成警告。

您还应该查看Delphi documentation变量。

答案 1 :(得分:2)

全局变量总是初始化为零 - 在布尔值中表示为false。程序和方法中的局部变量根本没有初始化。您需要自己为它们分配值。