const
  bFirstCalled = True;

解决方案 »

  1.   

    声明 bFisrtCalled为bool型常量 true,这个bool是表示显示的声明,一般情况下可以不写,特定的情况下为了防止二义性可以写。比如
    const
      dwHeight:DWORD= 100;
      nUnit:integer= 10; 
    这些的
      

  2.   

    同意pazee(耙子)的。一般来说delphi的编译器会根据常量的赋值来自动确定其类型,但程序员可以自己加入限定性的类型,以让编译器更好地理解自己的意图。
      

  3.   

    如果编译不通过,最大的可能是以上代码出现在一个过程或函数中,此时的const就相当于C/C++中的static关键字。
    在Delphi6中对于在过程或函数中为const赋值默认为不允许(这与Delphi5及以前版本不同了),可以用如下代码来对付:
    procedure test;
    {$J+}
    const
      bFirstCalled: Boolean = True;
    {$J-}
    begin
      ...
    end;更详细的内容可以在Delphi的帮助中查“writeable typed constants”关键字
      

  4.   

    此时的const就相当于C/C++中的static关键字。
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这话有问题吧?!
    这里的const可是常量的意思,不能修改的。
    应该相当于c++的const.
    static 是静态变量,是可以修改,概念不同的。
      

  5.   

    to pazee(耙子) : 我没有说错。请注意我说这句话的前提:……以上代码出现在一个过程或函数中,……
      

  6.   

    但我见到的代码(主程序)中,又对 bFirstCalled: 重新赋值为false,这又怎么解释?
      

  7.   

    嗬嗬!这是delphi中pascal的特殊性。按照pascal的语法,const声明的东西就是不变常量,"cannot change"但是delphi中如果你的编译指令是{$J+},那么这个const 声明的变量是可以修改的,这个const就相当于初始化,(pascal不支持类似int a= 100;这类的初始化方法),这是一个特例。如果是{$J-},那么这个const就是纯粹的const,是不能修改的。严格说,不提倡修改const的值。
      

  8.   

    你这个const bFirstCalled是过程/函数的参数吗?如果是,在该过程/函数中不被修改就可以在该过程/函数中声明成const,但在过程/函数外就可以改变。
    另外在pascal中可以在声明时对全局变量赋初值。
    $J开关是用来兼容DELPHI1.0的,D1中的这种const其实是被当做赋初值的变量来用的,也就是说是可以改变的。
      

  9.   

    很多情况下修改const值编译都是通不过的
    所以最好不要这样用