delphi快速入门一、基本语法

1、文件构成
delphi的主模块文件格式为.dpr(类似C++的.sln文件),其它模块文件为.pas(类似C++的.cpp文件)。所以一个完整的程序由一个.dpr和若干个.pas组成

(1).dpr程序结构
一个dpr由程序头、[use从句]、主程序组成,另外源文件联系着unit单元,一个典型的工程文件如下所示:
program Project;
{$APPTYPE CONSOLE}
use
SysUnits; //unit名称与.pas文件名称一致,一个.dpr中不能应用两个名称想用的.pas
begin
//....
end.
注意:良好的程序需在.dpr中代码尽量的少,代码最好分类在.pas中,然后在.dpr里调用工程文件红的全局标识符必须声明与begin之前。

(2).pas文件剖析
程序的每个子模块称为一个单元,每个单元存储在一个.pas文件中。每个.pas文件依次包括:单元名称、Interface关键字,implementation、[initalization]、[finalization]、关键字end。一个完整的pas文
件如下所示:
unit Unit1; //单元名称
interface //interface起始部分
uses ...
implementation //implementation起始处
uses ...
initialization //initalization起始处
...
finalization //finalization起始处
...
end. //单元文件结尾(end后必须以句号结尾)

interface下面可定义变量、常量、例程等。其它地方也能定义标识符,但是只有在这里定义的标识符才是全局标识符。在这里定义的例程只是一个原型,具体的实现部分则放在implementation中.
implementation下面可定义例程的具体代码,在此处定义的变量、常量、例程等,只能在本implementation单元使用,interface部分和其它单元无法使用initialization下面部分可选,此部分的代码在程序启动时运行。若多个单元中都包含该部分,则按照工程文件uses顺序执行。
finalization部分可有可无,仅当initization存在时才可以使用此部分。程序退出时使用该部分的代码,除非程序由Halt强行退出。当多个单元都存在此部分时,运行顺序与initalization相反。

2、数据类型
(1)常用整形
Integer -2147483648~2147483647
Shortint -128~127 Smallint -32678~32767
Byte 0~255 Int64 -2^63~ 2^63 - 1 Cardinal 0~4294967295
Word 0-65535 Longint -2147483648~2147483647
Real -5.0x10^-324~ 1.7x10^308
(2)其它常见类型
常量:Const 常量名 = 表达式 ,声明常量不必指定数据的类型,但必须初始化
Const Pi = 3.1415926
ErrorMsg = ‘类型错误‘
字符:包括ansiChar和wideChar,分别占一个字节和两个字节。
注意:如果想保存中文,必须用wideChar,如c := WideString(‘玩‘)

字符串:string
var 
s :string;
begin
s := ‘this is a test‘;
ShowMessage(s);
end;
布尔值:只有true和false两种类型,但是delphi内置4种布尔类型,分别是 Boolean/ByteBool/WordBool/LongBool,分别占1/2/3/4字节
枚举类型:type 名={标识符1,标识符2,标识符3...};
子界类型:type 子界类型名 = 下界..上界
集合:type set1 = set of 有序值得集合。例如下面的例子
type 
set1 = set of 0..10
变体类型: variant

(3)数组:特别注意:delphi中数组的下标是从1开始
静态数组:
一维: type myarr = Array[3..5] of integer //值为3,4,5类型是整形
多维:type myArr = Array[1..3] of Array[3..5] of Integer 或者下面的方式
type myArr = Array[1..3, 3..5] of integer
动态数组:
type dyArray = array of char;
var 
dal: dyArray;
(4)记录类型:(结构体类型)
type
trec = record
mem1: char;
mem2: integer;
...
end;
(5)指针:type 指针类型标识符 = ^数据类型
var 
p: ^Integer;
var ansiStr :^AnsiString;
或者先声明类型再声明变量
type pansiStr = ^AnsiString;
var ansiStr : pansiStr;

@取地址符(类似C++的&),如@ansiStr
^取值符(类似C++的*), 如^ansiStr
(6)运算符
div 求整数部分
mod 求余数部分
not 反
and 且
or 或
xor 异或
shl 左移
shr 右移

+ 对于字符串就是连接字符串成一个新的字符串。如 str = "abd" + "ed" //anded
集合运算符:
+ 集合所有不重复的组成新的集合。[1,2] + [2, 3] = [1,2,3]
- 去掉集合中所有共有元素组成新的集合 [1,2,3] - [2,6] = [1,3]
* 集合*有的元素组成新的集合 [1,2,3] * [2,3] = [2,3]
>= 若前者包含后者,则返回true [1,2,5] >= [2,5]
in 从属运算。若X是S1的成员,则返回True,否则返回False

3、语句
(1)if语句
if(条件表达式) then
语句 //切记,如果有对应得else语句,则这里不能用分号
else
语句;
(2)选择语句
Case 选择表达式 of
常量1: 语句1;
...
Else
...
End;

例如:
case myChar of 
‘+‘ : Text := ‘Plus sign‘;
‘-‘ : Text := ‘Minus sign‘;
‘*‘, ‘/‘: Text := ‘muti‘;
‘0‘..‘9‘: Text := ‘number‘;
(3)循环语句
-------while循环-------
while 条件表达式 do
循环语句;
例如:while i < n do
begin
sum := sum + i;
i := i++;
end;

------repeat循环---------
repeat 
循环体
until 条件表达式
例如:repeat
i := i+1;
sum := sum + i;
until i = n;

------for循环---------
for 计数器 := 初值 to/down 终值 do
循环体
例如:for i := 1 to/down n do
writeln(‘hello delphi‘)
------for ...in 循环-------
for v in set do
循环体
例如:var
mySet: set of AnsiChar;
ch : AnsiChar;
begin
mySet := [‘1‘, ‘2‘];
for ch in mySet do 
writeln(‘hello delphi‘)

(4)终止语句
--------exit-------------
exit退出当前正在执行的程序块,不会退出整个程序,除非将其用在了主程序块中(.dpr)

procedure Mi; //procedure没有返回值
begin
exit;
end;

function Mi:string //function有返回值
begin
exit(‘str‘);
end;

----------Halt----------
Halt引发异常中断并通过中断直接退出整个程序
procedure Mi;
begin
Halt;
end;

--------terminate------
delphi窗体程序含有一个全局程序对象(一般是Application),terminate可在窗体程序的任何地方使程序正常终端并退出
procedure TForm1.Button1Click(sender: TObject);
begin
Application.terminate;
end;

(5)注释语句
delphi的注释有三种,除了常见的//和/**/之外,还有就是用花括号{}注释,位于{}中
的内容为注释

4、过程和函数
--------过程(procedure)--------
procedure 过程名(参数列表) //参数列表中同类型的参数之间用逗号隔开,
局部声明部分 //不同类型的参数用分号隔开
begin
过程体语句块
end;
例如:
procedure TForm1.showsum(N:integer);
var 
sum, i: integer;
begin
sum := 0;
for i:= 1 to N do
sum := sum + i;
showMessage(inttostr(sum));
end;

-------函数(function)---------
function 函数名(参数表):返回值数据类型
局部声明部分
begin
函数体语句块
end;
例如:
function TForm1.tryfunc(i, j:integer; c:char):integer;
begin
tryfunc := 1;
end;

5、快捷操作
(1)常用快捷键
F4 运行到下一个断点
F5 设置断点
F7 进入函数
F8 单步运行
F9 运行程序
F12 快速切换源文件和窗体
Shift + F12 切换到窗体
Ctrl + F12 切换到源文件

6、特殊符号
^ 指针的引用解析操作符。如果该符号出现在类型前面,表示一个指针,如var p:^integer;如果在后面,那么表示取地址对应的值。如 i := p^
@ 取址运算符 var i:integer; p:^integer; i := 2; p := @i;
# Ascii值表示符。如 const key = #9
$ 十六进制符

delphi快速入门一、基本语法

上一篇:模型类2 元选项


下一篇:windows 驱动开发1 内核中字符串的操作。