zoukankan      html  css  js  c++  java
  • Delphi基本语法

    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;
  • 相关阅读:
    未能加载文件或程序集BUG系列
    寄语
    65. Valid Number
    56. Merge Intervals
    sublime text3 anaconda 插件报错
    42. Trapping Rain Water
    windows 下win+r无效
    93. Restore IP Addresses
    32. Longest Valid Parentheses
    48 Rotate Image
  • 原文地址:https://www.cnblogs.com/delphixe/p/8322086.html
Copyright © 2011-2022 走看看