初见Delphi

Delphi 2010比以往的Delphi版本都要快,而且它保留了一些Delphi 7的特性,比如可以将旧的条形控件(componentbar)找回。但这同时也带了相关的问题(比如在重启Delphi 2010之后componentbar的位置看起来挪动了),不过这只是细节问题,相信在之后的修补中会解决这个问题。

1.工程文件结构

源文件联系着unit单元,delphi主模块源文件格式为.dpr,其他模块为.pas。一个完整程序由一个.dpr和若干个.pas文件组成。

2. .dpr程序结构

一个.dpr由程序头、[use从句]、主程序块组成。一个典型工程文件如下

1 program Project;
2 {$APPTYPE CONSOLE}
3 uses
4    SysUnits;
5 begin
6 
7 end.

程序头指示所编写程序名称,良好的程序,.dpr代码尽量少,尽量将代码分布在.pas中然后再在.dpr里调用。

在程序主文件使用到的所有.pas文件必须列在uses从句里。

用begin和end包围的一段代码称为一个代码块。工程文件含有一个主程序块用于存放主程序代码,工程文件中的全局标识符必须声明于begin之前。

3.单元文件结构

程序的每个子模块称为一个单元,每个单元存储在一个.pas文件中,一个文件对应一个单元。单元文件后缀名.pas,每个.pas文件依次包括:unit单元名称、Interface关键字、implementation、[initialization]、[finalization]、关键字end。一个完整的.pas文件如下:

 1 unit Unit1;      //单元名称
 2 
 3 interface        //interfae起始部分
 4    uses ...
 5 
 6 implementation  //implementation起始处
 7    uses.....
 8 
 9 initialization    //initialization部分起始处
10 .....
11 
12 finalization     //finalization部分起始处
13 .....
14 
15 end.              //单元文件结尾(end后必须以句号结尾)

unit名称与.pas文件名称一致,一个.dpr中不能应用两个名称相同的.pas.

interface至implementation之间的部分称为interface部分。该部分可定义变量、常量、例程等。并非只有此处才可以定义标识符,但只有此处定义的标识符才能被其他文件访问(全局标识符)。此部分定义的例程只是一个原型,具体的实现部分则放在implementation中。uses关键字紧接着interface之后,两者间不允许有任何其他代码。

implementation至initialization之间的部分可书写例程的体代码,此处定义的比变量、常量、例程等,只能在本implementation单元使用,interface部分和其他单元无法使用。

initialization至finalization之间的部分可选,此部分的代码在程序启动时运行,若多个单元中都包含该部分,则按照工程文件uses顺序执行。

finalization部分可有可无,仅当initialization存在时才可使用此部分。程序退出时使用此部分代码,除非程序由Halt强行退出。当多个单元都存在此部分,运行顺序与initialization相反。

4. 单元语法与uses从句

5. delphi的数据类型

dephi.jpg

简单类型包括:整形、字符型、布尔型、枚举、子界类型、实型。除实型以外,都是有序类型,即每个值在值域中都有一个序数。

6. 整型

dephi2.jpg

7.实型

dephi3.jpg

8. 字符类型

包括ansiChar和WideChar,ansiChar使用一个字节表示一个字符,WideChar则用两个字节表示一个字符。二者之间不能相互赋值。

9. 布尔型

用于判断真假,只有true和false两种值。

delphi内置4中布尔类型:Boolean/ByteBool/WordBool/LongBool,内存中分别占1、1、2、4个字节。

10.枚举类型

type
  typeName = (标识符1,标识符2,标识符3.。。。);

11.子界类型

type
  子界类型名 = 下界..上界

12.集合

type
  set1 = set of 有序值得集合

例子:
type
  set1 = set of 0..10;

type
  set2 = set of (red,green,blue);

type
  set3 = set of byte;

13.数组

静态:

一维:
type
  myarr = Array[3..5] of integer  //序号是3、4、5值为integer类型

多维:
type
  myarr = Array[1..3] of Array[3..5] of integer;
或
type
  myarr = Array[1..3,3..5] of integer;

动态:
type
  dmyarr = array of char;
var 
  dal:dmyarr;

14.记录类型

type
  trec = record
     mem1:char;  //mem1继承 char类; char声明对象mem1
     mem2:integer;
     ...
end;

15.字符串类型

dephi4.jpg

16.指针类型

指针的声明:
var ansiStr :^AnsiString;
或先声明类型在声明变量:
type pansiStr = ^AnsiString;
var ansiStr:pansiStr;

指针的赋值:
方式有二,即将另一指针变量值赋给该指针变量,此两个变量指向同一个地址;或者将某个变量的地址赋给该变量。
@取址符 如@ansiStr
^取值符 如ansiStr^

17. 变体类型

variant

18.运算符

有序类型运算符:

ord:返回有序值在值域中的序数
如:ord('A') = 65
pred:返回指定值的前一个值
pred('B') = A
succ:返回指定值的下一个值
succ('A') = B
high:返回变量能够表示的最大值或某类型的上界
high(byte) = 255
low:与high相反

数学运算符:

+  加
-  减
*  乘
/  除
div    整除
mod    求余

逻辑运算符:

not    反
and   且
or      或
xor    异或

位运算符:

not    按位取反
and   按位取且
or      按位取或
xor    按位取异或
shl     左移
shr     右移

字符串运算符:

+  将字符串连接

集合运算符:

dephi5.jpg

指针运算符:

dephi6.jpg

关系运算符:

dephi7.jpg

19.条件语句

if语句

1 if <条件表达式> then
2   <语句1>
3 else
4   <语句2>;

20.选择语句

1 Case 选择表达式 of
2   常量1:语句1;
3   ...
4   常量n:语句n;
5 Else
6   ...
7 End;

21.循环语句

  1. while
1 While 条件表达式 do
2    循环语句;
  
例:
while i < n do
begin
  sum := sum+i;
  i := i+1;
end;


2.repeat

repeat 循环体
until 条件表达式

例:
repeat
   i := i+1;
   sum := sum+i;
until i = n;

3 . for

for 计数器 := 初值 to/downto 终值 do
循环体

例:
for i := 1 to/downto n do
  writeln('hello delphi');

4.for ... in

for v in set do
  循环体

例:
var
   myset :set of AnsiChar;
   ch : AnsiChar;
begin
  myset := ['1','2'];
  for ch in myset do
     writeln(ch);
end.

for in还可以遍历数组、字符串、类、接口、记录。

22. continue和break语句

23. 程序终止

exit:退出当前正在执行的程序块,不会退出整个程序,除非将其用在了主程序块(.dpr文件中)中。

procedure Mi;
begin
  exit;
end;

或返回一个参数,该参数类型和函数返回类型一致
function Mi:string
begin
  exit('str');
end;

Halt:引发异常中断并通过中断直接退出整个程序。

procedure Mi;
begin
  Halt;
end;

terminate:delphi窗体程序中含有一个全局程序对象(一般是application),其中的terminate方法可在窗体程序的任何地方使程序正常中断并退出。

procedure TForm1.Button1Click(sender:TObject);
begin
  Application.terminate;
end;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,930评论 6 13
  • 很实用的编程英语词库,共收录一千五百余条词汇。 第一部分: application 应用程式 应用、应用程序app...
    春天的蜜蜂阅读 1,341评论 0 22
  • 我知道一定是我不够好,所以你才离开我。这句话听着怎么这么矫情呢。 就像上一秒我以为“任性”是褒义词:对固有的常规和...
    小香凤阅读 391评论 0 1
  • 教学与艺术的思考 “教学是一门遗憾的艺术”,这句话,我们耳熟能详。很多老师在观课议课或反思教学时经常引用它,这说明...
    百无一是阅读 200评论 0 2