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 关键字。
  • 例程间的参数个数或(和)参数类型必须不同,返回值不能用于区分各例程。

delphi 基础之一 数据类型和基本语法的更多相关文章

  1. py基础之数据类型及基本语法

    '''python中有五种数据类型,分别是整数.浮点数.字符串.布尔值.空值'''a = 1b = 2.0c = 'hello,world'print (a,b,c)#a是整数,b是浮点数,c是字符串 ...

  2. Delphi基础语法的学习笔记和注意事项总结

    以下是我在自学Delphi的时候,对一些注意点的简单总结,并没有什么系统性可言,只是一个学习时顺手记下的笔记,主要为了当时加深对知识的印象,并没有希望能在以后的复习和使用Delphi中有什么多大的参考 ...

  3. delphi基础篇之数据类型概论

    delphi基础篇之数据类型概论 Object Pascal 语言提供了非常丰富的数据类型,即简单类型(Simple).字符串类型(String).结构类型(Struct).指针类型(Pointer) ...

  4. C#基础--之数据类型

    C#基础--之数据类型 摘自:http://www.cnblogs.com/tonney/archive/2011/03/18/1987577.html 在第一章我们了解了C#的输入.输出语句后,我这 ...

  5. Go语言基础之数据类型

    Go语言基础之数据类型 Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等.Go 语言的基本类型和其他语言大同小异. ...

  6. Java基础-Java数据类型

    Java基础-Java数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...

  7. Learning Python 004 基础的数据类型和变量

    Python 基础的数据类型和变量 数据类型 整数 Python可以处理任意大小的整数,当然包括负整数. Python表示十六进制也用0x前缀. 浮点数 1.23x10^9和12.3x10^8是完全相 ...

  8. page74-泛型可迭代的基础集合数据类型的API-Bag+Queue+Stack

    [泛型可迭代的基础集合数据类型的API] 背包:就是一种不支持从中删除元素的集合数据类型——它的目的就是帮助用例收集元素并迭代遍历所有收集到的元素.(用例也可以检查背包是否为空, 或者获取背包中元素的 ...

  9. JavaScript基础:数据类型的中的那些少见多怪

    原文:JavaScript基础:数据类型的中的那些少见多怪 Javascript共有6种数据类型,其中包括3个基本数据类型(string,number,boolean).2个特殊数据类型(undefi ...

随机推荐

  1. [ZOJ 1005] Jugs (dfs倒水问题)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5 题目大意:给你6种操作,3个数a,b,n,代表我有两个杯子,第一个杯 ...

  2. 【LeetCode】84. Largest Rectangle in Histogram

    Largest Rectangle in Histogram Given n non-negative integers representing the histogram's bar height ...

  3. 关于conversation generation的论文笔记

    对话模型此前的研究大致有三个方向:基于规则.基于信息检索.基于机器翻译.基于规则的对话系统,顾名思义,依赖于人们周密设计的规则,对话内容限制在特定领域下,实际应用如智能客服,智能场馆预定系统.基于信息 ...

  4. 在UltraEdit的查找和替换中使用正则表达式 (转)

    很多朋友都用过或者正在用UltraEdit,这个编辑器陪伴我也好几年了,从很多地方影响着我写代码的快捷键习惯,Ultraedit提供了非常丰富的编辑功能,其中非常重要的查找和替换功能一定大家都用过,U ...

  5. OpenStack学习笔记(一)----安装虚拟化工具

    下面的命令运行在操作系统Ubuntu 14.04上. 在开源软件里面,主要是采用KVM和Xen.尽管OpenStack对KVM和Xen都支持,但是OpenStack对KVM的支持明显要比Xen做得好, ...

  6. 用Java开发代理服务器

    基础知识 不管以哪种方式应用代理服务器,其监控HTTP传输的过程总是如下: 步骤一:内部的浏览器发送请求给代理服务器.请求的第一行包含了目标URL. 步骤二:代理服务器读取该URL,并把请求转发给合适 ...

  7. mybatis-generator 代码自动生成工具

    今天来介绍下怎么用mybatis-gennerator插件自动生成mybatis所需要的dao.bean.mapper xml文件,这样我们可以节省一部分精力,把精力放在业务逻辑上. 之前看过很多文章 ...

  8. js实现页面悬浮框

    当滚动条下拉时,悬浮框位置不变,主要是 position:fixed;样式的作用. 当下拉到一定程度,接近footer时,我用js控制div消失,往上拉滚动条时又显示. <!DOCTYPE ht ...

  9. Glassfish数据源配置详解

    本文环境: Win2003 + myeclipse6.01 + sqlserver2000(sp4) 1. 安装glassfish——启动,在管理控制台下配置如下 首先配置连接池——大家把sqlser ...

  10. 008sudo用户管理

    1.Sudo是Unix/Linux平台上一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的权利,让它们执行一些只有超级用户或其他特许用户才能完成的任务(主要体现为命令),比如,运行一些像mo ...