Color(2)
Longint(@Buffer)
得到的结果是转换括号内的表达式。若指定的类型和表达式的的类型大小不同,结果会截断或扩展。表达式的符号总是被保留(这是什么意思?)。
语句
I := Integer('A');
把Integer('A')的值(也就是65)赋给变量I。
一个值转换的后面不能有限定符(什么意思?),并且不能出现在赋值语句的左边。
Variable typecasts(变量转换)
倘若它们的大小(占用的内存)相同,并且你没有混用整数和实数,则可以把任何变量转换为任何类型(要转换数字类型,依靠标准函数,比如Int和Trunc)。变量转换的例子包括
Char(I)
- 28 - value typecast(值转
Boolean(Count)
TSomeDefinedType(MyVariable)
变量转换可出现在赋值语句的任何一边。这样
var MyChar: char;
...
Shortint(MyChar) := 122;
把字符z(ASCII1值是122)赋给MyChar。
你可以把变量转换为过程类型。比如,给出下面的声明
type Func = function(X: Integer): Integer;
var
F: Func;
P: Pointer;
N: Integer;
你可以应用下面的赋值语句
F := Func(P);{ Assign procedural value in P to F }
Func(P) := F;{ Assign procedural value in F to P }
@F := P;{ Assign pointer value in P to F }
P := @F;{ Assign pointer value in F to P }
N := F(N);{ Call function via F }
N := Func(P)(N);{ Call function via P }
变量转换也可以跟限定符,像下面的例子所示
type
TByteRec = record
Lo, Hi: Byte;
end;
TWordRec = record
Low, High: Word;
end;
PByte = ^Byte;
var
B: Byte;
W: Word;
L: Longint;
P: Pointer;
begin
W := $1234;
B := TByteRec(W).Lo;
TByteRec(W).Hi := 0;
L := $01234567;
W := TWordRec(L).Low;
B := TByteRec(TWordRec(L).Low).Hi;
B := PByte(L)^;
end;
在这个例子中,TbyteRec被用来访问一个字(word)的低字节和高字节,
整数的低字和高字。你也可以使用内置函数Lo和Hi达到同样的目的,但变量转换的优点就是它可以用在赋值语句的左边。 TwordRecSyntactic elements
- 29 - 被用来访问一个长
Syntactic elements
要了解指针转换,请参考Pointers and pointer types;要了解类和接口类型的转换,请参考The as operator and Intece typecasts。
Declarations and Statements(声明和语句)
About Declarations and Statements(关于声明和语句)
除了uses子句(和划分单元不同部分的关键字,像implementation),一个程序完全由声明和语句构成,声明和语句被组织成块(block)。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-18.html
美狗的忠诚度确实高