Delphi学习
Object Pascal入门
1.1运算符
1.1.1赋值运算符
运算符 | pascal | C/C++ |
---|---|---|
赋值 | := | = |
1.1.2比较运算符
运算符 | Pascal | C/C++ |
---|---|---|
等于 | = | == |
不等于 | <> | != |
小于 | < | < |
大于 | > | > |
小于等于 | <= | <= |
大于等于 | >= | >= |
1.1.3逻辑运算符
运算符 | Pascal | C/C++ |
---|---|---|
逻辑与 | and | && |
逻辑或 | or | || |
逻辑非 | not | ! |
1.1.4算术运算符
运算符 | Pascal | C/C++ |
---|---|---|
加 | + | + |
减 | - | - |
乘 | * | * |
除(浮点数) | / | / |
除(整数) | div | / |
取模 | mod | % |
指数 | 无 | 无 |
1.1.5按位运算符
我们知道,变量在内存中是使用一些位(Bit)储存0或者1来保存的。按位运算符就是对位进行的符号。例如:
var
I: Byte; {Byte类型的取值范围在0~255,用8比特保存}
begin
I :=0; {此时I在内存中的状态:00000000}
I :=not I; {对各位取反,因此变为“11111111”,即255}
end;
运算符 | Pascal | C/C++ |
---|---|---|
与 | and | & |
取反 | not | ~ |
或 | or | | |
异或 | xor | ^ |
左移 | shl | << |
右移 | shr | >> |
1.1.6其他运算符
in。 判断集合是否包含一个元素,例如:
type
TOneSet=set of(A,B,C);
var
OneSet: TOneSet;
begin
OneSet :=[A,B];
if A in OneSet then
showMessage('集合OneSet包含A');
end;
(2)对一个集合的元素进行增加,减少时,除了使用+,-运算符外,还可以使用过程Include和Exclude如:
type
TOneSet=set of(A,B,C);
var
OneSet: TOneSet;
begin
OneSet :=[A];
OneSet := OneSet + [B]; {等于下一句}
Include(OneSet,B);
OneSet :=OneSet - [B]; {等价于下一句}
Exclude(OneSet,B);
end;
2.对于对象类型转化
(1)可实现使用is进行类型兼容性判断,然后用as转化。例如:
var
Obj: TObject;
Button: TButton;
begin
......
if obj is TButton then {如果Obj是TButton类型或者其子类}
Button :=Obj as TButton; {将Obj转化为TButton类型并赋值给Button}
end;
(2) 也可以使用TObject.InheritsFrom代替is运算符
3.对指针操作
(1)符号@和。@用于取得一个变量的地址指针;用来取得一个指针对应的数据,也可以用于声明指针类型。例如:
type
PInteger = ^Integer; {在类型名前面加上^可以声明其对应的指针类型}
var
I,J: Integer;
PI: PInteger;
begin
I := 5;
PI := @I; {取得变量I的地址指针}
J :=PI^; {从PI中取出值,此时I=J}
end;
(2) 使用函数Addr可以代替@符号取得变量地址。如:
PI :=Addr(I);
判断一个指针是否有指向时,除了使用:
if P <> nil then DoSomething;
这样的形式外,还可以调用函数Assigned,它们是等价的:
if Assigned(p) then Dosomething;
4.加减算法
Inc和Dec:
procedure Inc(var X[; N: Logint ]);
procedure Dec(var X[; N: Logint ]);
它们可以运用在所有ordinal类型的变量上。如:
var
I: Integer;
begin
I :=1;
Inc(I); {此时I=2;Inc和Dec默认的增减量是1,相当于I :=I+1}
Inc(I,2); {此时I=3;相当于I :=I+2}
end;
值得一提的是,它们也可以用于指针类型,表示对指针移位SizeOf(X)*N个字节。如:
var
p: PChar;
begin
P := 'China';
Inc(P); {此时指向从‘c’移动到‘h’上}
ShowMessage(p); {显示‘hina’}
Dec(P); {此时指向从‘h’移动到'c'上}
ShowMessage(p); {显示‘China’}
end;