正如所知,你不能把一个变量赋给另一个不同类型的变量,如果你需要这么做,有两种方法供选择。第一种方法是采用类型映射(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 是偶数。
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.050255060195923 seconds