• 对变量和常量的分析,常量+{$J+}=可定义作用域的全局变量


    1、变量和常量从外观上看,变量和常量都是一些符号;
    2、从内部看,它们代表某块内存中保存的数据。
    3、常量的值是在声明时给定的,程序运行时一般不能改变({$J+}时可以在当前单元中修改),但是变量的值在声明时一般不能给定初始值(Delphi全局变量可在声明时指定初始值),在运行时可以改变;
    4、无类型常量与有类型常量
    1 Const
    2   X = 5;//无类型常量,编译器自动指定;类型为ShortInt,占8字节
    3   Y: Integer =5;//有类型常量,占16字节
    5、类变量(静态变量)、实例变量、全局变量、局部变量
    类变量/常量:delphi不能直接定义;类变量和实例变量的区别是:类变量在内存中只有一个拷贝,运行系统只为类变量分配一次内存,在加载类的过程中完成类变量的内存分配,所以类变量可以直接通过类名访问。对于实例变量,每筹建一个实例对象,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响。类变量在所有类的实例中共享,这可以用作实例之间交流的基础或追踪已经创建的实例的数量。

    全局变量与局部变量:单元中声名的变量为全局变量,可用于单元内所有方法,单元被引用后也可以被引用单元所使用;方法中声名的变量为局部变量,只能用于方法内部;

    在单元中定义的常量,同全局变量,只是不能修改;
    在方法中定义的常量,作用域相同都只能在方法中使用,且不可修改(使用{$J+}达到在当前单元中修改常量),除此之外,常量无论在类方法中定义还是在实例方法中定义,其都只保存一个值,并且与实例无关。在不同方法类定义的两个常量可以重名,并不相互影响(DELPHI)
     1 class function TTest.test(t:integer): Integer;
     2 const
     3   i:integer=0;
     4 begin
     5    case t of
     6      0:;
     7      1: i:=1;
     8      2: i:=2;
     9    end;
    10 
    11    Result:=i;
    12 end;
    13 
    14 procedure TForm1.Button2Click(Sender: TObject);
    15 begin
    16   showmessage(inttostr(ttest.test(0))) ;
    17   showmessage(inttostr(TTest.test(1)));
    18   showmessage(inttostr(TTest.test(2)));
    19   //tt:=TTest.Create;
    20   //showmessage(inttostr(tt.InstanceSize));
    21 end;
    22 
    23 function TTest.test2(t: integer): Integer;
    24 const
    25   i:integer=0;
    26 begin
    27    case t of
    28      0:;
    29      1: i:=1;
    30      2: i:=2;
    31    end;
    32 
    33    Result:=i;
    34 end;
    35 
    36 procedure TForm1.Button3Click(Sender: TObject);
    37 var
    38   t1,t2:TTest;
    39 begin
    40   t1:=TTest.Create;
    41   showmessage(inttostr(t1.test2(0))) ;
    42   showmessage(inttostr(t1.test2(1)));
    43   showmessage(inttostr(t1.test2(2)));
    44   t2:=TTest.Create;
    45   showmessage(inttostr(t2.test2(0))) ;
    46   showmessage(inttostr(t2.test2(1)));
    47   showmessage(inttostr(t2.test2(2)));
    48   freeandnil(t1);
    49   freeandnil(t2);
    50 
    51 end;

    常量+{$J+}=可定义作用域的全局变量
  • 相关阅读:
    lab anycast rp
    激光 & 激光器
    管道机器人结构设计及控制系统搭建
    自动开关灯装置
    基于MATLAB步态算法仿真的六足仿生机器人
    蓝牙AT模式
    语音识别LD3320
    蓝牙模块设置
    6红外遥控程序
    62、如何消除碎片文件
  • 原文地址:https://www.cnblogs.com/ZhouXiHong/p/318279.html
Copyright © 2020-2023  润新知