• delphi基本语法


    本文参考自《delphi2010语法手册》

    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文件依次包括:单元名称、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的数据类型

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

    6. 整形:

    7. 实型:

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

    9. 布尔型:用于判断真假,只有true和false两种值。delphi内置4中布尔类型:Boolean/ByteBool/WordBoolLongBool,内存中分别占1、1、2、4个字节。

    10. 枚举类型:

    type
      名 = (标识符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;
         mem2:integer;
         ...
    end;

    15. 字符串类型:

    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     右移

    字符串运算符:

    +  将字符串连接

    集合运算符:

    指针运算符:

    关系运算符:

    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;
  • 相关阅读:
    Combine 框架,从0到1 —— 4.在 Combine 中使用计时器
    Combine 框架,从0到1 —— 4.在 Combine 中使用通知
    Combine 框架,从0到1 —— 3.使用 Subscriber 控制发布速度
    Combine 框架,从0到1 —— 2.通过 ConnectablePublisher 控制何时发布
    使用 Swift Package Manager 集成依赖库
    iOS 高效灵活地配置可复用视图组件的主题
    构建个人博客网站(基于Python Flask)
    Swift dynamic关键字
    Swift @objcMembers
    仅用递归函数操作逆序一个栈(Swift 4)
  • 原文地址:https://www.cnblogs.com/armyfai/p/4010563.html
Copyright © 2020-2023  润新知