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

$ 十六进制符