⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 book1.mdb

📁 不用说了!看看就明白了!
💻 MDB
📖 第 1 页 / 共 5 页
字号:
Int64    -2^63..2^63?   signed 64-bit
Byte    0..255      unsigned 8-bit
Word    0..65535     unsigned 16-bit
Longword  0..4294967295  unsigned 32-bit
  一般整数类型的实际范围和存储格式随着Object Pascal的不同实现而不同,但通常根据当前CPU和操作系统来采取最佳的操作方式。
  一般整数类型是最常用的整数类型,可以充分利用CPU和操作系统的特性,因此程序中应当尽量使用一般整数类型。基本整数类型独立于操作系统和CPU,只有当应用程序的数据范围或存储格式特别需要时,才使用基本整数类型。
  通常情况下,整数的算术运算结果为Integer类型,等价于32位的Longint类型。只有当操作数存在 Int64类型时,才返回Int64类型的值。因此,下面的代码将产生错误的结果:
var I: Integer; J: Int64;
 ...
I := High(Integer);
J := I + 1;
  在这种情况下,要取得一个Int64的值,必须进行类型转换:
J := Int64(I) + 1;
  注意:绝大多数例程在遇到Int64时都把它转换为32位。但例程High,Low,Succ,Pred,Inc,Dec,IntToStr和IntToHex则完全支持Int64参数。Round,Trunc,StrToInt64,和StrToInt64Def函数可以返回Int64类型的结果。
(2)字符类型(Char)
  字符类型中Char类型设计来只存储一个字符。一个字符占一个字节,因此Char数据类型可以存储256个不同的字符,其对应的整数为0到255。
  除了Char数据类型外,Delphi还提供了Char类型的扩展,即AnsiChar和WideChar型。表6-4是字符数据类型的列表。
  表6-4 字符整数类型
字符类型  占用字节数  存储内容
AnsiChar   1      存储一个Ansi字符。
WideChar   2      存储一个UniCode字符。
Char     1      目前,对应AnsiChar。但Delphi将来的版本可能对应于WideChar。
  Ansi字符集是扩展的ASCII字符集,仍然占一个字节。目前,Char对应AnsiChar,但Borland公司在将来的Delphi版本中可能使Char对应WideChar。  
 WideChar用来支持泛字符集(Unicode)。Unicode字符占用两个字节,可以有65536种不同的取值,可以表达现代计算机中使用的世界上所有的字符,包括图形符号和用于出版业的特殊符号等。
  UniCode字符集的前256个字符对应着ANSI字符。如果你把一个AnsiChar字符放到WideChar字符类型的变量中,WideChar字符类型变量的高字节将全部置为0,AnsiChar字符存放到WideChar字符类型的变量的低字节中。
 注意:Windows NT全面支持Unicode字符号集,但Windows 95却不同。如果你希望书写的程序同时能在两种系统上运行,必须使用SizeOf()函数,以确定字符占多少字节。
(3)布尔类型(Boolean)
  Boolean数据类型的变量只存储一个逻辑值,例如True或False。共有4种Boolean数据类型,见表6-5。
表6-5 布尔类型 
类型  说明 
Boolean 占1个字节 
ByteBool 占1个字节 
WordBool 占2个字节 
LongBool 占4个字节
  Delphi提供多种Boolean数据类型的目的是为了兼容,因为在某些情况下,Windows需要用一个字(2个字节)或双字(4个字节)来表示一个布尔值。
(4)枚举型
  所谓枚举类型,就是用一组数量有限的标识符来表示一组连续的整数常数,在类型定义时就列出该类型可能具有的值。枚举类型是一种用户自定义的简单数据类型。在类型定义时就列出该类型可能具有的值。下面是枚举类型定义的一些例子:type 
  TDays=(Monday,YuesDay,Wednesday,Thursday,Friday,Saturday,Sunday); 
TPrimaryColor=(Red,Yelloow,Blue); TDepartment=(Finance,Personnel,Engineering,Marketing,MIS); TDog=(Poodle,GoldenRetriever,Dachshund,NorwegianElkhound,Beagle);
  枚举类型定义中的每个值都对应一个整数,整数值由该值在类型定义表中的位置决定,通常类型定义的第一个数对应的整数值为0。例如,在TDay类型定义中Monday对应值为0、Tuesday值为1,等等。如果你把DayOfWeek定义为Integer,通过赋整数值来代表星期几,也可以得到同样的结果。但是,由于枚举类型表达的意思明确、直观、便于记忆,因此使用枚举类型仍有必要。
  下面是声明一个枚举类型的语法(图6.2)。
  其中标识符列表中的标识符之间用逗号隔开,它列出该类型可能具有的值。
下面是声明一个枚举类型变量的举例:
  var DayOfWeek:TDays; 
  Hue:TPrimaryColor; 
  Department:TDepartment; 
  Dogbreed:TDog;
  也可以把类型声明和变量声明合二为一,例如:
var DayOfWeek:(Monday,YuesDay,Wednesday,Thursday,Friday,Saturday,Sunday);
  在声明枚举类型和枚举变量时,请注意以下几点:
1)枚举的元素只能是标识符,标识符的命名必须符合 Pascal关于标识符的规定,例如下面的声明就是错误的:
type TDays=(0,1,2,3,4,5,6,7);
2)同一个枚举元素不能出现在多个枚举类型中。例如下面的声明就是错误的: 
type TColors1=(Red,Blue,Green,White,Black); 
   TColors2=(Yellow,Lime,Silver,Green);
 两个类型变量中都有Green元素,是不允许的。
3)不能直接用枚举类型中的元素参加运算,例如,下面的语句就是错误的:
X:=Red+Blue;
  但是,可以用某个枚举类型中的元素对枚举变量赋值,例如,下面的语句: 
DayOfWeek:=Monday;
(5)子界型
  子界类型是Integer,Boolean,Char及枚举型等称为宿主类型数据的一个子集。当你要限制一个变量的数据范围时,使用子界类型就特别有用。子界类型也是一种用户自定义的简单数据类型。要定义子界类型,必须说明区间的最大值和最小值,下面是子界类型定义的一些例子:
type TCompassRange = 0..360; 
TValidLetter ='A'..'F'
TMonthlyIncome=10000..30000;
THours =0..23; TPrecipitation=(Drizzle,Showers,Rain,Downpour,Thunderstorm); {枚举型} 
TRain =Drizzle..Downpour; {上面枚举型的子界型}
  下面是声明一个子界类型的语法规则(图6.3)。
  其中两个常数(称为上界和下界)必须是同一种有序类型,如Integer,Boolean,Char及枚举型等,但不能是Real数据类型。第一个常数必须小于或等于第二个常数。
  下面是声明子界类型变量的举例:
var Compass:TCompassRange;
ValidChar:TValidLetter;
  在声明子界类型和子界类型变量时,请注意以下几点:
1)上界常数和下界常数必须是同一类型,且都是有序类型。
2)子界类型变量具有宿主类型数据的所有运算特性,但运算的结果必须在范围内。
3)上界常数和下界常数可以是表达式。例如: 
const X = 10; Y = 50; 
type Color = (Red, Green, Blue); 
Scale = X * 2..X * 20;
2.实数类型(Real)
  实数类型是带有小数部分的数值,存储实数。有6种不同的Real数据类型,它们在范围、精确度、大小等方面都不相同。见表6-6。
  实数类型
数据类型 取值范围           有效位 存储字节
Real48  2.9 x 10^-39 .. 1.7 x 10^38  11..12 6
Single  1.5 x 10^-35 .. 3.4 x 10^38  7..8  4
Double  5.0 x 10^-324 .. 1.7 x 10^308 15..16 8
Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19..20 10
Comp   -2^63+1 .. 2^63 ?        19..20 8
Currency 22337203685477.5808..922337203685477.5807 19..20 8
当前通常使用的Real等价与Double。
6.3.2 字符串类型
  Delphi在处理字符串时,提供了多种方式,表6-7是Delphi使用的字符串类型。
表6-7 字符串类型
类型    最大长度  存储的字符  是否以Null结尾
ShortString 255个字符 AnsiChar   否
AnsiString~ 2^31个字符 AnsiChar   是
String   或者255或者~2^31个字符 ANSIChar都可能
WideString ~2^30个字符 WideChar   是
  从上表可知,Delphi主要支持两种类型的字符串: ShortString和AnsiString。WideString类似于AnsiString,只是其存储的字符为WideChar。
  ShortString数据类型定义的是长度在1到255之间动态长度字符串。像数组一样,单个字符可以通过引用它们的索引进行存取。位于0的字节存储了代表字符串当前所赋值长度的数值(只能通过关闭范围检查才能访问)。ShortString数据类型主要是为了能和Delphi 1.0和Borland Pascal的早期版本兼容。
  AnsiString(又称为long String或huge String)数据类型的定义是动态分配的,长度几乎可以无限的(仅受可用内存限制)以NULL结尾的字符串。AnsiString中的字符由AnsiChar数据类型的字符组成。
  建议最好使用AnsiString数据类型。这是因为AnsiString数据类型的变量是动态分配的,当把一个更长的字符串放入AnsiString数据类型的变量时,Delphi会从新为该变量申请空间。如果要显式地改变字符串的长度,可以使用SetLength() 函数来分配一块恰当的内存;使用AnsiString数据类型的另外一个优点是,AnsiString字符串是以NULL结尾,即在最后一个字符之后自动加上一个NULL字符表示字符串结束,与操作系统的大多数函数例程兼容,例如Win32 API,从而在调用操作系统函数例程时更加方便,不需要使用StrPCopy()来将以Pascal风格的字符串转换为以NULL结尾的字符串。Delphi VCL构件的所有特性、事件使用AnsiString来传递参数,以简化、统一VCL和API之间的接口。
  String既可以是SHortString类型也可以是AnsiString类型,缺省是AnsiString类型。例如,如果你像下面那样定义字符串:
var S: String;// S is an AnsiString
  则编译器假定你要创建一个AnsiString数据类型变量。
  使用$H编译命令可以改变缺省定义。当在程序中把编译开关$H的状态改为{H-}时,String缺省是ShortString类型;当在程序中把编译开关$H的状态改为{H+}时,String缺省是AnsiString类型。例如:
var {$H-} S1: String; // S1 is a ShortString
{$H+} 
S2: String; // S2 is an AnsiString
  如果定义中指明了长度(最大为25 5),则String为ShortString。例如:
var S: String[63]; // S是一个 长度为63的ShortString变量。
6.3.3 结构数据类型
  结构类型在内存中存储一组相关的数据项,而不是像简单数据类型那样单一的数值。Object Pascal结构类型包括集合类型、数组类型、记录类型、文件类型、类类型、类引用类型、接口类型等。这里,我们只介绍集合类型、数组类型、记录类型和文件类型。类类型、类引用类型和接口类型放在下一章介绍。
1.数组(Array)
  数组是一种数据类型数据的有序集合,是代表一定数量具有相同类型变量的一种数据类型。Object Pascal数组可与任何简单数据类型或字符串类型等一起使用。数组可用于声明一个简单变量或作为一个记录类型定义的组成部分。
  (1)数组的定义
  下面是声明一个数组类型的语法规则(图6.4)。
 要声明一个数组变量,要求你提供一个标识符,使用array保留词,在方括号中指定数组的界限,并指定编译器数组将用于存储什么类型,例如:
Var Check:array[1..100] of Integer;
 范围标点‘..’用于表示Check是一个有100个整数的数组,这些整数从1到100编号。范围编号是一个子界类型,可以是0,也可以是正数或负数,或者字符,或其它有序类型。
  下面是声明数组类型及数组类型变量的举例:
Type TCheck = array [1..100] of Integer;
Var CheckingAccount:TCheck;
  上面是先定义数组类型,然后定义数组变量。其实上,也可以同时定义类型、变量,例如:
var Kelvin:array[0..1000] of Temperatures; 
TwentiethCentury: array[1901..2000] of Events; 
LessThanzeroo: array[-999..-400] of Shortint; 
DigiTValues:array ['0'..'9' of Byte; 
SecretCode:array[''A'..'Z' of char;
 访问数组中的元素很简单,只要在标识符后面的方括号中给出指定的元素的索引号即可。例如:
Check[5]:=12;
J:=9;
Check[J]:=24;
  要访问数组中的所有元素,可以使用循环语句。例如 :
For J:=1 to 10 do Check[J]:=0;
(2)多维数组

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -