初学Delphi,Delphi中的常量是不是也是这样,初始化后(就是const i:integer = 1;)或定义完后第一次赋值后(就是const i:integer;...  i=100;)就不能再给它赋值了?

解决方案 »

  1.   

    打开{$J+}编译的常量可以再赋值,通常的不行,如:
    procedure a;
    {$J+}
      const test: integer = 1;
    {$J-}
    begin
      test := 2;
      showmessage(inttostr(test)); // 2
    end;
      

  2.   

    delphi有两种常量,第一种是编译期常量,声明的时候不带类型(除字符串,字符串一般用long string类型储存),作为即时数编译;后者带类型声明,可以取地址,通常编译在pe的常量段。
    2楼的方法我一直都不知道,而且这个需求挺奇怪的,既然是常量干嘛还要改变它的值
      

  3.   

    帮助说好像是兼容早期的东西。但是它有个很奇特的功能,就是能做到静态变量的效果,你多次调用这个函数,每次给test加一,可以看到它会是1、2、3、4…… 这样。另外在其中一种DELPHI单例模式的实现中也有用到这个编译符