delphi 基础之一 数据类型和基本语法

1. 数据类型

特定类型 日期和时间

Delphi 也用实型数表示日期和时间数据。但为了更准确起见,Delphi 特别定义了TDateTime 数据类型,这是一个浮点类型,因为这个类型必须足够宽,使变量能容纳年、月、日、时、分和秒、甚至毫秒。日期值按天计数,从1899-12-30开始,放在TDateTime 类型的整数部分;时间值则位于十进制数的小数部分。

TDateTime 不是编译器可直接识别的预定义类型,它在System单元定义:

type

  TDateTime = type Double;

使用TDateTime 类型很简单,因为Delphi 为该类型定义了一系列操作函数,表3.3列出了这些函数。

表: TDateTime类型系统例程

例程

作用

Now

返回当前日期及时间

Date

返回当前日期

Time

返回当前时间

DateTimeToStr

按缺省格式将日期和时间值转换为字符串;特定格式转换可用   FormatDateTime函数

DateTimeToString

按缺省格式将日期和时间值拷贝到字符串缓冲区

DateToStr

将TDateTime值的日期部分转为字符串

TimeToStr

将TDateTime值的时间部分转为字符串

FormatDateTime

按特定格式将日期和时间值转换为字符串

StrToDateTime

将带有日期和时间信息的字符串转换为TdateTime类型值,如串有误将引发一个异常

StrToDate

将带有日期信息的字符串转换为TDateTime类型格式

StrToTime

将带有时间信息的字符串转换为TDateTime类型格式

DayOfWeek

根据传递的日期参数计算该日期是一星期中的第几天

DecodeDate

根据日期值返回年、月、日值

DecodeTime

根据时间值返回时、分、秒、毫秒值

EncodeDate

组合年、月、日值为TDateTime类型值

EncodeTime

组合时、分、秒、毫秒值为TDateTime类型值

Windows类型 通常在window.pas 或sysytem.pas中定义。可以使用ctrl+鼠标左键查看。

附表2:有序类型系统例程

例程

作用

Dec

将例程中的参数值递减1或一个特定的值,其中特定值可在第二个可选参数中定义

Inc

将例程中的参数值增加1或一个特定的值

Odd

如果参数为奇数返回真

Pred

根据参数在其数据类型定义中的序列,返回参数值的前驱值

Succ

返回参数值的后继值

Ord

返回参数值在其数据类型值集合中的序号

Low

返回参数对应的有序数据类型的最小取值

High

返回参数对应的有序数据类型的最大取值

附表3:类型转换系统例程

例程

作用

Chr

将一个有序数据转换为一个ANSI字符

Ord

将一个有序类型值转换为它的序号

Round

转换一个实型值为四舍五入后的整型值

Trunc

转换一个实型值为小数截断后的整型值

Int

返回浮点数的整数部分

IntToStr

将数值转换为字符串

IntToHex

将数值转换为十六进制数字符串

StrToInt

将字符串转换为一个整型数,如字符串不是一个合法的整型将引发异常

StrToIntDef

将字符串转换为一个整数,如字符串不合法返回一个缺省值

Val

将字符串转换为一个数字(传统Turbo Pascal例程用于向后兼容)

Str

将数字转换为格式化字符串(传统Turbo Pascal例程用于向后兼容)

StrPas

将零终止字符串转换为Pascal类型字符串,在32位Delphi中这种类型转换是自动进行的

StrPCopy

拷贝一个Pascal类型字符串到一个零终止字符串, 在32位Delphi中转换是自动进行的  

StrPLCopy

拷贝Pascal类型字符串的一部分到一个零终止字符串

FloatToDecimal

将一个浮点数转换为包含指数、数字及符号的十进制浮点记录类型

FloatToStr

将浮点值转换为缺省格式的字符串

FloatToStrF

将浮点值转换为特定格式的字符串

FloatToText

使用特定格式,将一个浮点值拷贝到一个字符串缓冲区

FloatToTextFmt

同上面例程,使用特定格式,将一个浮点值拷贝到一个字符串缓冲区

StrToFloat

将一个Pascal字符串转换为浮点数

TextToFloat

将一个零终止字符串转换为浮点数

2. 常量和变量

1)  常量

Const 常量名=常量值

True和false是boolen型的标准常量,maxint是integer型的标准常量,表示最大值。三者属于系统定义的常量,可直接使用,不必定义。

        注:资源字符串的定义方式还可以这样:
          resourcestring

          strName = '文件';

2)  var 变量名:类型名[=初始值];

3.语句和流程控制

1).基本语句

包括赋值语句: 用“:=”;

空语句:不执行任何操作;

过程语句:如读语句read用于从标准输入设备(键盘)中输入数据;写语句write用于向标准输出设备(显示器)输出数据。Writeln()输出一个回车换行符。

2).流程控制语句

<条件语句:>

If语句

(1) if...then...;

(2) if 条件

then 语句1

else 语句2;

(3) if 条件1

then 语句1

else if

then 语句2

else

语句3;

注意then 和else字句之间不能有分号,只需在最后语句加上分号和其它语句分开就好。

Case 语句

Case 表达式 of

常量1:语句1;

常量2:语句2;

常量n:语句n;

End;

<循环语句:>

For 语句

递增型for语句

For 控制变量:=初值 to 终值 do

语句;

递减型for语句

For 控制变量:=初值 downto 终值 do

语句;

While语句(先判断后执行)

While 布尔表达式 do

语句;

Repeat 语句(先执行后判断,保证循环体最少执行一次)

Repeat

(循环体)语句;

Until 布尔表达式;

<转移语句>

Break 跳出循环;continue结束本次循环,回到循环条件,判断是否执行下一次循环。Break 和 从continue 语句常和循环语句搭配使用。

Exit 退出函数或代码块(复合语句),halt 终值程序运行(非正常),返回操作系统。

Goto 标号;

使用前需要用关键字 label 定义 标号如:label  标号1,标号2;

3)With语句

With语句是一种用于简化代码的语句。如你要访问一个记录类型变量(或一个对象),用With语句就不必每次重复变量的名字。例如对于以下的记录类型代码:

type

     Date = record

     Year: Integer;

     Month: Byte;

     Day: Byte;

  end;

 

var

  BirthDay: Date;

begin

                              with BirthDay do

    begin

    Year := 1995;

    Month := 2;

    Day := 14;

   end;

end;

在Delphi程序中,这种方法能用于访问控件和类变量。

4、过程和函数

无论过程和函数,都遵循“先说明后使用”的原则。

1)过程

Procedure 过程名([var] 参数:类型);//过程首部

过程变量声明;                       //过程说明

 begin                             

  语句                             //语句体

end;

2)函数(Result:函数返回)

Funciton 函数名([var] 参数:类型); //函数首部

函数变量声明;

 begin                             

    语句                             //语句体

end;

3)参数传递:

数值参数,简称值参:不带 var 的,称为数值参数。是缺省的参数传递方式:即将值参的拷贝压入栈中,例程使用、操纵的是栈中的拷贝值,不是原始值。

变量参数(传递参数),简称变参:带 var 的,实际传递的是一个实在参数变量的地址。当通过引用传递参数时,没有按正常方式把参数值的拷贝压栈(避免拷贝值压栈一般能加快程序执行速度),而是直接引用参数原始值,例程中的代码也同样访问原始值,这样就能在过程或函数中改变参数的值。引用参数用关键字var 标示。

  常量参数:带 const的,常为常量参数。

4)函数重载

重载的思想很简单:编译器允许你用同一名字定义多个函数或过程,只要它们所带的参数不同。实际上,编译器是通过检测参数来确定需要调用的例程。

下面是从VCL的数学单元(Math Unit)中摘录的一系列函数:

function Min (A,B: Integer): Integer; overload;

function Min (A,B: Int64): Int64; overload;

function Min (A,B: Single): Single; overload;

function Min (A,B: Double): Double; overload;

function Min (A,B: Extended): Extended; overload;

当调用方式为Min (10, 20)时,编译器很容易就能判定你调用的是上列第一个函数,因此返回值也是个整数。

声明重载函数有两条原则:

  • 每个例程声明后面必须添加overload 关键字。
  • 例程间的参数个数或(和)参数类型必须不同,返回值不能用于区分各例程。
原文地址:https://www.cnblogs.com/bjxsky/p/4610239.html