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 ...
随机推荐
- 临时改GCC编译器,重启后失效
临时改GCC编译器,重启后失效.例如,用如下命令: export CROSS_COMPILE= <gcc 文件所在的目录>/arm-linux-gnueabihf- 本例中使用的命令如下: ...
- js的传值,table中tr的遍历,js中动态创建数组
1.这里关键是对页面中的传值,其次是动态的创建一个数组,用来存值 $(val).css("background-color", "rgb(251, 248, 233)&q ...
- Android:Activity的跳转
// 实际开发中常用的方法 Intent intent = new Intent(); intent.setClass(MainActivity.this, LoginActivity.class); ...
- MWC飞控增加声纳定高的方法
MWC飞控增加声纳定高的方法 2015.12.17 更新:经过2个周末的上机测试,该算法效果很好,在低空超声锁高之后离地高度非常稳定,现在已经成功应用在低空航拍上了. 现状 MWC开源飞控已经很有点年 ...
- 使用CORS:跨域两三事
本文为译文. 简介 APIS是可以将富网页应用串连在一起的线程.但是这个应用难以转给浏览器,跨域请求技术的选择被限制了,类似JSONP(由于安全考虑,使用会被限制),或者配置代理(设置和维护都比较头痛 ...
- javascript设计模式-桥接模式
在系统中,某些类由于自身逻辑,具有两个或两个以上维度的变化,如何使得该类型可以沿多个方向变化,但又不引入额外的复杂度,这就是桥接模式要解决的问题. 定义:桥接模式(Bridge),将抽象部分与它的实现 ...
- Windows API——CREATEEVENT——创建事件
事件是一个允许一个线程在某种情况发生时,唤醒另外一个线程的同步对象.事件告诉线程何时去执行某一给定的任务,从而使多个线程流平滑 CreateEvent是创建windows事件的意思,作用主要用在判断线 ...
- coffeeScript 语法总结
CoffeeScript ---->安装node.js ---->安装coffeeScript 语句: 注意:没有分号,语句由新的一行结束:多条语句写到同一行时需要分号表示一条语句的结束( ...
- chrome浏览器设置小于12号的字体不起作用?
在某些chrome浏览器下,css里设置的10号字体竟然不起作用!仍显示12号大小,对比firefox.ie6.7.8.9,他们的显示都是好的. 要是你也碰到这问题,可以这样解决: -webkit-t ...
- Android WebRTC 音视频开发总结(四)-- webrtc传输模块
在介绍WebRTC通讯之前我们先来看一个P2P视频聊天包括的主要过程,转载请说明出处(博客园RTC.Blacker): 音视频数据采集->编码->发送->接收->解码-> ...