Delphi变量不区分大小写
Delphi变量可以用下划线开头
常量声明格式:

  const 
	变量名1 := 常量值1;
	变量名2 := 常量值2;

变量声明格式:

   var
	变量名1 : 数据类型;
	变量名2, 变量名3, 变量名4 : 数据类型;

在过程或函数中定义的变量都是局部变量,其它的都为全局变量
全局变量系统会自动初始化,Integer = 0, string = ''
局部变量如果没有显示初始化,则为一个随机数

简单类型包括有序类型和实数类型

有序类型定义了一个有序的数值范围,除了第一个值外,均有前一个值。

有序类型包括Integer、Cardinal(无符号大正数)、字符型(Char,单个字符)、布尔值、枚举、子界类型

定义枚举

type
  TWeekDay = (SunDay, Monday);

枚举类型的意义是用有意义的值代替状态值
Ord(Monday):判断枚举值的位置,从0开始

子界类型:用于限定数据取值范围
定义字界类型:

	type
		Age = 10..18:--定义了一个age类型,它是Int类型的,只能取10到18间的值

Extended、Float、Double:实数类型
TDateTime:日期,实质是一个double型的数据

一个有趣的类型转换:
var a: Integer; b: Double; c:DateTime;
begin
  a := 10;
  b := a + 0.5;
  c := b; //c = '1900-01-09 12:00:00'
end;
dateTimeToStr():将日期转换为字符串,格式与计算机的日期格式有关,故不常用
FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz', MyDate):
IntToStr()

字符串类型:
ShortString: maxL = 255
AnsiString: 单字节字符串,一个中文占两个字节,一个英文占一个字节。MaxL = 20亿,有引用计数
WideString: 双字节字符串,不管中英文,通通占两个字节。MaxL = 20亿,无引用计数、
UnicodeString:MaxL = 20亿,有引用计数
string = UnicodeString
字符串用单引号
栈的读写速度很快,堆的容量最多可以是整个内存大小
对于占空间小的变量,可以保存在栈中
如果变量的值很大或是复杂类型的变量,则将变量的值保存在堆中,在栈中保存指向该堆地址的指针和变量名
引用计数:堆中某块地址被引用的次数,为0则自动释放这段内存。
字符串一旦创建,就不能更改,对字符串的更改本质上是重新new一个字符串(和Java中的String类有点像)

结构类型:

集合类型:set of 基本类型,一般与+并集、-差集、*交集、In成员检测配合使用
例: var age = set of 1..10;

数组类型:

        array of 数据类型
	array[数组下标..数值上标] Of Integer
	二维数组:array[row1Down..row1Up, row2Down..row2Up] of ..

var arr : array of Integer
SetLength(arr, length); {动态设置数组长度}

记录类型:和SQL中的变量表相似,用于记录一整套的相关信息。(和Java中的类相似)
定义记录类型:

	type
		类型名 = Record
				...各种变量声明	
			 end;

指针类型:保存指定类型的变量的所在地址
var
指针名 : ^数据类型
@变量名 :获得该变量的地址

指针名^ :获取该指针指向的地址保存的值

流程控制语句:

        if...then ...else
	Case
	For循环: for i = 0 to 10 do
	
		  for i = 10 downto 0 do
	break、Continue