Delphi学习

本文介绍了Delphi和ObjectPascal中的运算符,包括赋值、比较、逻辑、算术、按位和其他运算符。详细阐述了类型转换,如使用is和as进行对象类型检查与转换,以及指针操作如Inc和Dec的用法。此外,还讨论了集合操作和指针判断的方法。
摘要由CSDN通过智能技术生成

Delphi学习

Object Pascal入门

1.1运算符

1.1.1赋值运算符
运算符pascalC/C++
赋值:==
1.1.2比较运算符
运算符PascalC/C++
等于===
不等于<>!=
小于<<
大于>>
小于等于<=<=
大于等于>=>=
1.1.3逻辑运算符
运算符PascalC/C++
逻辑与and&&
逻辑或or||
逻辑非not!
1.1.4算术运算符
运算符PascalC/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;
	
运算符PascalC/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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值