九月星空

已埋半截……

DELPHI复习笔记[一]

杂烩 0 评

Pascal由瑞士苏黎士理工学院的尼古拉斯-沃斯(Niklaus Wirth)教授在1971年设计.
1983 年 Borland 公司推出了世界闻名的 Pascal 编译器 -- Turbo Pascal.
1995 年 Borland 发布了 Delphi ,使 Pascal 成为一种可视化编程语言.

Pascal的注释分为多行注释{.......}或(*......*) 和单行注释 //.......
如果是{$......}则为编译指令,实际上编译指令仍是注释.

在写代码时输入缩略代码后用代码模板(CTRL+J)完整的代码就出现了.

变量声明Var, 常用类型Integer String Boolean.
在声明变量时可以直接赋初值,格式为Value: Integer = 10 但只能用于全局变量.

常量声明Const, 声明常量不必特定数据类型,但需要赋一个初值,编译器会根据所赋初值自动选用合适的数据类型.
格式 pi=3.14;

字符串常量可以用resourcestring来声明,格式name='matian';这样声明的好处是可以在用编辑器
打开可执行文件时会看到此定义的字串符,这意味着字串符并没有进入编译代码,而是保存在可执行文件的一个单独区域.
这样采用资源的好处是可以不用更改源代码就可以更改字符内容(例如翻译成不同的语言).

整数类型ShortInt(1字节 无符号值域2^8),SmallInt(2字节 无符号值域2^16),LongInt(4字节 无符号值域2^32),
Int64(8字节 2^64),Integer(2/4字节 值域Cardinal 范围和16/32位平台有关).

函数SizeOf(Integer)求此类型所占字节大小,High()和Low()分别求此类型值域的最高最低值.

布尔类型Boolean(TRUE为1,FALSE为0),还有特殊布尔类型ByteBool WordBool LongBool用于WINAPI函数.

字符类型有两种不同的表示法:ANSIChar 和 WideChar, ANSIChar代表8位字符与ASCII字符集相应,
WideChar代表16位字符与双字节字符Unicode相应.无论在什么环境下前256个Unicode字符与ANSI字符是完全一致的.
常量字符除了用代表他们的符号表示外,也可以用数字符号表示,如#78表示字母K,或者用函数Chr(78)表示,Ord函数与Chr函数作用相反.
特殊字符 #9跳格(Tab键) #10换行 #13回车(Enter键).

有序类型的系统例程函数
Inc()将参数递减1或一个特定的值(第二个参数中定义),Dec()函数与此相反.
Pred()返回参数的前驱值,Succ()返回参数的后继值.
High()返回参数类型的最大值,Low()返回参数类型的最小值.
Odd()如果参数为奇数返回真,否则返回假.Ord返回参数在类型中的序号.

实数类型代表不同格式的浮点数.Single(4字节),Double(8字节),Extended(10字节),Real(8字节).

日期和时间数据类型不是预定义类型,存在于System单元.
日期时间类型函数:
Now()返回当前日期和时间.
Date()返回当前日期.
Time()返回当前时间.
DateTimeToStr()按缺省将日期和时间值转换为字符串.
DateTimeToString()按缺省格式将日期和时间值拷贝到字符串缓冲区.
DateToStr()将TDateTime值的日期部分转为字符串.
TimeToStr()将TDateTime值的时间部分转为字符串.
FormatDateTime()按特定格式将日期和时间值转换为字符串.
StrToDateTime()将带有日期和时间信息的字符串转换为TdateTime类型值(如串有误将引发一个异常).
StrToDate()将带有日期信息的字符串转换为TDateTime类型格式.
StrToTime()将带有时间信息的字符串转换为TDateTime类型格式.
DayOfWeek()根据传递的日期参数计算该日期是一星期中的第几天.
DecodeDate()根据日期值返回年、月、日值.
DecodeTime()根据时间值返回时、分、秒、毫秒值.
EncodeDate()组合年、月、日值为TDateTime类型值.
EncodeTime()组合时、分、秒、毫秒值为TDateTime类型值.

类型映射函数:
Integer() Char() Boolean() .
类型转换函数:
Chr()将一个有序数据转换为ANSI字符.
Ord()将一个有序数据转换为它的序号.
Round()四舍五入一个实型值为整型值(如果小数点第一位是中间值5&6,则判断个位,为奇则入,为偶则舍).
Trunc()截断一个实型值的小数部分为整型值.
Int()返回浮点数的整数部分.
IntToStr()将数值转换为字符串.
IntToHex()将数值转换为十六进制数字符串.
StrToInt()将字符串转换为整型数,如字符串不是合法整型将引发异常.
StrToIntDef()将字符串转换为整型数,如字符串不合法则返回一个缺省值.
Val()将字符串转换为一个数字.
Str()将数字转换为格式化字符串.

自定义数据类型Type
1.子界类型:定义了某种类型的取值范围.如 yeah=1000..2999; charzm='A'..'Z'.
2.枚举类型:是一种自定义有序类型,在枚举类型中列出所有该类型可能取的值.
  枚举类型序列中每个值都对应一个序号,序号从0开始计数,可以用Ord函数得到序号.
  如 Colors=(red,blue,green,yellow);
  DELPHI VCL很多地方属性用了枚举类型.比如DELPHI FORM的Borderstyle属性.
3.集合类型:表示一组值,该组值由集合所依据的有序类型定义,定义集合的常用有序类型一般为枚举类型和子界类型.
  集合类型可以不包含任何值,一个值,或更多,或包含定义范围那所有的值.
  如 type letters=set of char;
     var zimu:letters;
     zimu:=['A','b']; zimu:=[];
  集合一般用于表示由多种选择组合的标记.比如DELPHI VCL的font.style属性.
  在赋值的时候可以用加号直接连接相同类型集合变量为并集.
4.数组类型:定义了一组指定类型的元素序列,填入下标值就可以访问数组中的元素.
  如 Day=array[1..30] of Integer;定义了一个有30个整数的数组.
  day[1]:=80;进行对数组中第一个变量进行赋值.
  数组可以是多维的.如sum:=[1..90,5..9] of integer;
  可以用High和Low来检测数组的边界.
5.记录类型:用于定义不同类型数据项的固定集合.记录中每个元素都有它自己的类型.
  如 type Date=record
        Year:integer;
        Month:Byte;
        Day:Byte;
     end;
     var
     show:date;
     date.day:=9;
6.指针类型:是存放指定类型变量内存地址的变量,因此指针间接引用一个值.定义指针不需要特定的关键字.
  而用一个特殊符号---脱字符号^. 如 type num=^Integer;
  一旦定义了指针变量, 就可以用@符号把令一个相同类型变量的地址赋给它.
  如P:=@X; 而P^=X; P^表示指针P内存地址所存储的实际内容.
  还可以用New和Dispose分别为指针动态分配内存和释放内存.
  如果指针没有值,可以把nil赋给它.这样就可以通过检查指针是否为nil判断指针当前是否引用一个值.
  访问一个空指针的值会引起一个访问冲突错误---一般保护错(GPF).
  此外还有无类型指针数据Poniter(象C语言中的void*),使用无类型指针就要用GetMem,其可以用于内存分配大小不确定的情况.
7.文件类型:代表物理磁盘文件.

DELPHI复习笔记[二]
发表评论
撰写评论