本文整理自网络,侵删。
类型映射及类型转换
正如所知,你不能把一个变量赋给另一个不同类型的变量,如果你需要这么做,有两种方法供选择。第一种方法是采用类型映射(Typecasting),它使用一个带有目标数据类型名的函数符号:
var
N: Integer;
C: Char;
B: Boolean;
Begin
N := Integer ('X');
C := Char (N);
B := Boolean (0);
你可以在字节长度相同的数据类型之间进行类型映射。在有序类型之间或实型数据之间进行类型映射通常是安全的,指针类型及对象之间也可以进行类型映射 ,只要你明白自己在做什么。
然而,一般来说类型映射是一种较危险的编程技术,因为它允许你访问一个似是而非的值,该值好象是其它值的替身。由于数据类型的内部表示法之间通常互相不匹配,所以当遇到错误时会难以追踪,为此你应尽量避免使用类型映射。
第二种方法是使用类型转换例程。表3.4中总结了各种类型转换例程。其中有些例程所涉及的数据类型将在下一节中讨论。 注意表中没有包括特殊类型(如TDateTime 和variant)的转换例程,也没包括用于格式化处理的特殊例程,如 Format 和 FormatFloat 例程。
表3.4:类型转换系统例程
例 程
作 用
Chr
将一个有序数据转换为一个ANSI字符
Ord
将一个有序类型值转换为它的序号
Round
转换一个实型值为四舍五入后的整型值
Trunc
转换一个实型值为小数截断后的整型值
Int
返回浮点数的整数部分
IntToStr
将数值转换为字符串
IntToHex
将数值转换为十六进制数字符串
StrToInt
将字符串转换为一个整型数,如字符串不是一个合法的整型将引发异常
StrToIntDef
将字符串转换为一个整数,如字符串不合法返回一个缺省值
Val
将字符串转换为一个数字(传统Turbo Pascal例程用于向后兼容)
Str
将数字转换为格式化字符串(传统Turbo Pascal例程用于向后兼容)
StrPas
将零终止字符串转换为Pascal类型字符串,在32位Delphi中这种类型转换是自动进行的
StrPCopy
拷贝一个Pascal类型字符串到一个零终止字符串, 在32位Delphi中这种类型转换是自动进行的
StrPLCopy
拷贝Pascal类型字符串的一部分到一个零终止字符串
FloatToDecimal
将一个浮点数转换为包含指数、数字及符号的十进制浮点记录类型
FloatToStr
将浮点值转换为缺省格式的字符串
FloatToStrF
将浮点值转换为特定格式的字符串
FloatToText
使用特定格式,将一个浮点值拷贝到一个字符串缓冲区
FloatToTextFmt
同上面例程,使用特定格式,将一个浮点值拷贝到一个字符串缓冲区
StrToFloat
将一个Pascal字符串转换为浮点数
TextToFloat
将一个零终止字符串转换为浮点数
注意:在最近版本的 Delphi Pascal 编译器中,Round 函数是以 CPU 的 FPU (浮点部件) 处理器为基础的。这种处理器采用了所谓的 "银行家舍入法",即对中间值 (如 5.5、6.5) 实施 Round 函数时,处理器根据小数点前数字的奇、偶性来确定舍入与否,如 5.5 Round 结果为 6,而 6.5 Round 结果也为 6, 因为 6 是偶数。
相关阅读 >>
Delphi 的tstringbuilder防止服务器内存碎片化
更多相关阅读请进入《Delphi》频道 >>