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 关键字。
- 例程间的参数个数或(和)参数类型必须不同,返回值不能用于区分各例程。
delphi 基础之一 数据类型和基本语法的更多相关文章
- py基础之数据类型及基本语法
'''python中有五种数据类型,分别是整数.浮点数.字符串.布尔值.空值'''a = 1b = 2.0c = 'hello,world'print (a,b,c)#a是整数,b是浮点数,c是字符串 ...
- Delphi基础语法的学习笔记和注意事项总结
以下是我在自学Delphi的时候,对一些注意点的简单总结,并没有什么系统性可言,只是一个学习时顺手记下的笔记,主要为了当时加深对知识的印象,并没有希望能在以后的复习和使用Delphi中有什么多大的参考 ...
- delphi基础篇之数据类型概论
delphi基础篇之数据类型概论 Object Pascal 语言提供了非常丰富的数据类型,即简单类型(Simple).字符串类型(String).结构类型(Struct).指针类型(Pointer) ...
- C#基础--之数据类型
C#基础--之数据类型 摘自:http://www.cnblogs.com/tonney/archive/2011/03/18/1987577.html 在第一章我们了解了C#的输入.输出语句后,我这 ...
- Go语言基础之数据类型
Go语言基础之数据类型 Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等.Go 语言的基本类型和其他语言大同小异. ...
- Java基础-Java数据类型
Java基础-Java数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...
- Learning Python 004 基础的数据类型和变量
Python 基础的数据类型和变量 数据类型 整数 Python可以处理任意大小的整数,当然包括负整数. Python表示十六进制也用0x前缀. 浮点数 1.23x10^9和12.3x10^8是完全相 ...
- page74-泛型可迭代的基础集合数据类型的API-Bag+Queue+Stack
[泛型可迭代的基础集合数据类型的API] 背包:就是一种不支持从中删除元素的集合数据类型——它的目的就是帮助用例收集元素并迭代遍历所有收集到的元素.(用例也可以检查背包是否为空, 或者获取背包中元素的 ...
- JavaScript基础:数据类型的中的那些少见多怪
原文:JavaScript基础:数据类型的中的那些少见多怪 Javascript共有6种数据类型,其中包括3个基本数据类型(string,number,boolean).2个特殊数据类型(undefi ...
随机推荐
- isAnagram
/*Given two strings s and t, write a function to determine if t is an anagram of s. For example, s = ...
- Arch时间校准
sudo ln -s /usr/share/zoneinfo/UTC /etc/localtime sudo hwclock --systohc --utc sudo timedatectl set- ...
- 修复:"Failed to start Load Kernel Modules"
使用非默认内核而出现的错误. [zsj@arch ~]$ systemctl --state=failed UNIT LOAD ACTIVE SUB DESCRIPTION● systemd-modu ...
- Java - Nested Classes
(本文参考:http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html) Nested Classes class OuterClas ...
- 中南大学第一届长沙地区程序设计邀请赛 To Add Which?
1350: To Add Which? Time Limit: 1 Sec Memory Limit: 128 MB Description There is an integer sequence ...
- C与Lua互相调用的时候,栈变化分析
1 C调用Lua函数的堆栈变化 例子 Lua文件中的函数 function testNewCounter2() return "第四个结果" end C中的例子 void t_n ...
- 剑指Offer:面试题8——旋转数组的最小值(java实现)
题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入 一个递增排序的数组的一个旋转 输出 旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的 ...
- 关于 profile文件(转)
登录shell执行了两个特殊文件, 1个是:\etc\profile, 这个文件由系统管理员设置,通常做一些如检查是否有邮件,设置默认的创建文件的掩码,给某些表转到处变量赋值,已经任何管理员希望每当用 ...
- Flex4 自定义分页组件
自己写的Flex4分页组件,去伪存真,只实现基本的分页功能,数据过滤神马的都不应该是分页组件干的活,有呆毛才有真相: [源代码下载] Flex自从转手给Apache后人气急跌,本人也很捉鸡,尽管Apa ...
- ICE学习——异步1
ICE的AMI和AMD: AMI:指的是客户端的调用.一般有一个代理类,一个回调类. 从服务端返回的数据在回调类中的ice_response函数中. AMD:指的是服务端对客户端的调用分派.一般进行业 ...