Delphi常用关键字用法详解
- 格式:pdf
- 大小:246.63 KB
- 文档页数:21
Delphi常⽤关键字⽤法详解
本⽂详细介绍了Delphi中常⽤的各个关键字名称及⽤法,供⼤家在编程过程中借鉴参考之⽤。详情如下:
absolute:
1
2
3
4
5
6
7
8
9
10//它使得你能够创建⼀个新变量, 并且该变量的起始地址与另⼀个变量相同.var Str: string[32]; StrLen: Byte absoluteStr;//这个声明指定了变量StrLen起始地址与Str相同.//由于字符串的第0个位置保存了字符串的长度, 所以StrLen的值即字符串长度.beginStr := 'abc';Edit1.Text := IntToStr(StrLen);end;
abstract:
1
2
3
4
5
6
7
8
9
10
11
12
13//它允许你创建抽象的⽅法, 包括有抽象⽅法的类称为抽象类.//Abstract关键字必须与Virtual或Dynamic关键字同时使⽤, 因为抽象⽅法必须被覆盖式实现.//抽象类不能实例化, 抽象⽅法不能包含⽅法体.type TDemo = class private protected procedure X; virtual; abstract; public constructor Create;
destructor Destroy; override; published end;
and:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19//⼀、表⽰逻辑与if (a>0) and (b>0) then//⼆、表⽰位运算vara,b,c: Integer;beginc := (a and b);end;//使⽤And表⽰逻辑时, And左右的表达式必须⽤⼩括号括起, 以避免以⽣条件的冲突.//例如:if a>0 and b>0 then//编译器可能会理解为:if a>(0 and b)>0 then//或:if (a>0) and (b>0) then//但是实际编译时, 编译器会产⽣⼀个冲突, 报告错误.//并且第⼀种可能包含了a>b>c的形式, 这在Delphi中不被⽀持.//所以使⽤And运算符时必须使⽤括号, 以区分左右的条件.//表⽰位运算时也必须加上括号, 将And以及左右参数括起.
array:
1
2
3
4
5
6
7
8
9
10
11
12//Array⽤于表⽰数组, 任何的对象都能被声明成数组.数组分为静态和动态的2种.//静态数组varArr1: array [1..10] of Integer;
//动态数组, 由于声明时不知其元素个数, 所以必须在后期⽤SetLength⽅法设置数组的⼤⼩varArr2: array of Integer;
//数组作为参数时, 不能传⼊数组的⼤⼩, 只能传⼊数组名, 然后⽤Length⽅法获取数组的元素个数function X(A: array of Integer): Integer;vari: Integer;12
13
14
15
16
17
18i: Integer;beginResult := 0;for i := 0 to Length(A)-1 doResult := Result + A[i];end;
as:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17//As⽤于将⼀个对象转换为另⼀个对象procedure BtnClick(Sender:TObject);begin (Sender as TButton).Caption := 'Clicked';end;//对于对象填充接⼝的转换, 必须⽤As进⾏(HTTPRIO as IExp).GetConnection;
//As不能⽤于数据类型的转换, 下⾯的代码是错误的:vari: Integer;s: string;begins := (i as string);end;//正确写法是:s := string(i);
asm:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18//Asm关键字⽤于插⼊汇编代码, 使⽤汇编代码时, 必须使⽤asm...end;的结构, ⽽⾮begin...end;function IntToHex(Value: Integer; Digits: Integer): string;asm CMP EDX, 32 JBE @A1 xor EDX, EDX @A1: PUSH ESI MOV ESI, ESP SUB ESP, 32 PUSH ECX MOV ECX, 16 CALL CvtInt MOV EDX, ESI POP EAX CALL System.@LStrFromPCharLen ADD ESP, 32 POP ESIend;
assembler:
1
2
3//Assembler关键字⽤于⽀持早期的汇编, 如80386等.//它和Asm的区别:Asm允许使⽤Win32汇编, ⽽Assembler只允许80x86汇编, 它不允许Invoke语句的出现.function IntToHex(AValue: Int64): string; assembler;
automated:
1
2
3
4
5
6
7
8
9
10
11
12
13
14//Automated访问区分符⽤于描述⼀个⾃动类型的成员, 它能够使程序的版本向下兼容.
//ComObj单元内的成员及其实例不能使⽤Automated访问区分符.type TDemo = class automated Str:WideString; end;//在程序的下⼀个版本中, 将Str做了修改, 变成typeTDemo = classautomatedStr: AnsiString;end//则新版本的Str变量能够接受旧版本的WideString型数据, 并⾃动转换成AnsiString.//在实际开发中, 如果没有特殊的需要, ⼀般不⽤automated访问区分符.14
15
begin:
1
2
3
4
5
6
7
8
9
10
11//begin关键字⽤于表⽰⼀段程序或⼀个结构的开始, 必须⽤end关键字来结束.procedure X;begin ShowMessage('A Demo');end;//⼀般的结构, 如If, For, While等也需要⽤begin关键字来标出结构起始点for i:=1 to 100 dobeginsum := sum + i;if sum > 1000 then Break;end;
case:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16//Case语句⽤于完成条件选择, Case语句的的被选择对象必须是有序类型, 包括整型, 枚举类型, 字符型等.//Case语句必须由end结束,如果没有相符合的选择项, 可以加⼊else来作出通⽤选择.function GetDays(AYear,AMonth: Integer): Integer;begin case AMonth of 1,3,5,7,8,10,12: Result := 31; 4,6,9,11: Result := 30; 2: begin if IsLeapYear(AYear) then Result:=29 else Result:=28; end; else Result:=0;end;
cdecl:
1
2
3
4
5
6
7
8
9//Cdecl是函数调⽤协定的⼀种, 它规定了从C或C++编写的DLL中调⽤函数所必须遵守的规则.//它可以将C或C++中的数据类型转换为Delphi的.//例如C++中的代码:int X(int i){ return i*2;}//这个函数被编译在Demo.dll中, ⽤Delphi调⽤时必须使⽤:function X(i: Integer): Integer; Cdecl; external 'Demo.dll';
class:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21//Class关键字⽤于声明或继承⼀个类, 也可以使类和接⼝同时继承.
//另外, Class关键字也能⽤于声明类通⽤⽅法, 使得⽗类可以从类内访问⼦类的⽅法.type ClassDemo = class(TObject) private public constructor Create; end;//如果⽤class声明⽅法, 则该⽅法在类与相关类中都可以使⽤, 譬如:typeClassA = classprivatepublicprocedure Y;end;
typeClassB = class(ClassA)privatepublicclass procedure X;end;