- UID
- 49175
注册时间2008-5-1
阅读权限20
最后登录1970-1-1
以武会友
TA的每日心情 | 奋斗 2017-4-20 22:12 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
本帖最后由 suiyunonghen 于 2010-5-25 22:52 编辑
1:数据类型:
A:整型:
1):byte:0---255 [用high和low来测试变量的最大值和最小值]
2):shortint:-128----127
3):smallint:-32768---32767
4):word:0----65535
5):integer:-2147483648----2147483647
6):int64:-2 63----2 63
7):cardinal:4294967295
A:实型:
single:有效位数[7---8]位
real:有效位数[11---12]位
double:有效位数[15---16]位
extended:有效位数[19--20]位
一般用real
B:字符类型:char
用单引号括起来的一个字符: 比如:var ch:char;
C:字符串
在delphi中,我们可以使用用两种形式声明的字符串:
string声明的字符串,结尾不含null。
pchar声明的字符串,结尾含有null,这是很多api函数所使用的字符串格式,实际上它是一个指向字符串的 指针
区别有以下几点:
1:可以用lentgh来测量两种字符串中所含有字符个数
2:string声明的字符串第一个字符的下标为1,而pchar声明的字符串下标为0
3:对于string字符串要以直接比较大小,而对pchar字符串来说只能够使用函数strcomp
4:一个pchar+'字符串'将变成string类型的字符串,string类型的字符串可以相加,但pchar类型的字符串 不能相加
string类型与pchar类型的转换:
string---pchar pchar(字符串)
string与pchar的应用:
dr:=stralloc(20);
getsystemdirectory(dr,strbufsize(dr));
dr:=pchar(strpas(dr)+'\calc.exe');
showmessage(dr);
winexec(dr,SW_SHOWNORMAL);
d:布尔类型:(boolean)只能是false:假,true:真
E:变体类型:(variant)类型不固定,delphi会自动转化:
比如:
var v1,v2,v3:variant;
i:integer;
s:string;
v1:=1;v2:=1.24;v3:='567';v4:=v1+v2+v3;
--------------------------------------------------------------------------------------------
符号常量:
定义方法:
const
常量名=常量值;
注意以下几点:
1:符号常量必须写在var的下面
2:如果在程序中,某一常数要反复使用很多次,则可以使用符号常量
3:不能在程序中其它位置给常量再赋值
--------------------------------------------------------------------------------------------
变量:
1:变量的声明:
var
变量名1:类型;
变量名2:类型;
当多个变量具有相同的类型时,可以使用如下格式:
var 变量名1,变量名2....变量名n:类型 来声明
2:变量的赋初值:
方法:变量名=值
如果不进行初始化就使用变量系统会:
1:整型,实形:随机 2:字符串:为空串 3:布尔型:true
--------------------------------------------------------------------------------------------
运算符与表达式:
1:算术运算符: +,-,*,/,div,mod
说明:
"/":参加运算的数无论是整型还是实型结果都是实型
"div":参加运算的两个数必须都是整数,商也是整数
"mod":取余同上
优先级别:(*,/)>(div,mod)>(+,-)
逻辑运算符:not and or 优先级别:not>and>or
关系运算符:>,>=,<,<=,<>,=
表示:a>10并且要小于20 if (a>10) and (a<20) then 不能 if a>10 and a<20 原因是逻辑运算符的 优先级别大于关系运算符
字符串运算符:
"+":用来连接两个字符串.
常用函数与过程:
数学函数:
A:abs(x):求绝对值
B:sqr(x):求x的平方
C:sqrt(x):求平方根
D:sin(x),cos(x).
E:int(x),frac(x):返回x的小数部分,round(x):四舍五入之后的整数
随机函数:
random(n):返回大于或等于零且小n的随机数.
random:0<=x<1
random(90)+10 返回10到100之间的数
说明:
为了能产生互不相同的随机数,应在程序启动时调用一次randomize过程以初始化内部随机数产生器
字符处理函数:
lowercase(s):转成小写
uppercase(s):转成大写
comparestr(s1,s2):比较大小,区分大小写
comparetext(s1,s2):是不分大小写的
concat(s1,s2...sn):把s1,s2..sn连成一个新串
pos(substr,s):在字符串s中查找子串substr.
该函数会返回子串在字符串s中的位置,若不在,则返回零。
length(s):用来确定字符串的长度。
copy(s,n,m):从字符串s中截取从n开始的m个字符串
delete(s,n,m):删除从n开始的m个字符长的子字符串[注意:汉字占2个位]
数值与字符串的转换函数:
inttostr,floattostr,strtoint,strtofloat,chr(x):将ascii码值转换成对应的字符。
格式化函数:
format(格式化字符串,数组)
%d,%s,%f:
比如:format('%s删除了%d条记录',['work表',10])相当于"work表删除了10条记录
举列:
var i:integer;s:string; i:=3;s=:'我的心';format('%s有%d个',[s,i]);
相当于 s+'有'+inttostr(i)+'个'
日期时间函数:
now:返回系统当前的日期和时间:
date:返回日期:
tiem:返回时间:
datetostr,timetostr,datetimetostr
--------------------------------------------------------------------------------------------
语句的书写规则:
1:每个语句必须以分号";"结束
2:简单的语句为空语句;即什么也不做
3:较为复杂的情况是多个语句用begint和end字围起来,组成复合语句。
比如:
begin
<语句1>
....
<语句2>
end;
赋值语句:
变量名(属性名):=值; [注意不要写成=]
注释语句:为了提高程序的可读性,可以在适当的位置加上一引注释
1:行注释:// 2:块注释:{ }
基本语句的介绍:
1:选择结构:
if 语句
1:if (条件) then
begin
语句体
end;
2:if (条件) then
begin
语句体
end
else
begin
语句体
end;
说明:
1:else上面的语句不能有分号
举列: #8:backspace,#46:小数点 #48---#57 (0---9)
case 语句
格式:
case 表达式 of
常量表1:语句1
常量表2:语句2
......
常量表n:语句n
else
其它语句
end;
说明:
1:表达式的值必须是顺序类型(整型,字符型,布欠型)
2:常量表中的值应该是"表达式"中可能具的值,各常量之间用逗号分隔,所有常量必须不同
3:else可以省略。
4:else表示没有匹配的项时,就做else.
举列:
2:循环结构:
1: while 语句
格式:
while (条件) do
begin
语句体
end;
说明:
1:可以在while里面设置break语句,强制退出循环
2:可以在while里面设置contiune语句,来结束本次循环。
举列:
2:for语句
格式:
for 循环变量:=初值 to|downto 终值 do
begin
语句体
end;
1:可以在for里面设置break语句,强制退出循环
2:可以在for里面设置contiune语句,来结束本次循环。
举列:
3:repeat
begin
语句体
end;
until (停止循环的条件)
上面讲解了一些基础的语法,现在我们来说一下Delphi的函数与过程。
过程与函数是程序设计中重要的概念,也是实现结构化程序设计思想的重要手段。
什么是过程:
过程(procedurce):是没有返回值的。
过程的分类:
1:标准过程:系统内部已经定义好的过程,无须编写 如:copy,delete等。
2:用户自定义过程:必须由用户自行编写代码以完成指定的操作。
包括:事件过程,通用过程
A:事件过程:依附于对像,当该对像的的某个事件被触发,就会去执行事件过程。比如:onclick等。
B:通用过程:告诉应用程序如何完成一项指定的任务,不与任何对像相联系。
事件过程的创建与调用:
创建:在objectonspector器中选择相应的事件直接编写代码。
说明:一个事件过程可以被多个对像,多个事件共享
举列:
通用过程的创建与调用:
A:创建只能在本单中使用的通用过程:[此时不要声明]
直接写在implementation 的下面{$R *.dfm}
procedurce 过程名(形叁表);
[局部声明]
begin
过程体
end;
B:创建能够在其它单元中使用的过程:
第一步:必须首先要在inte**ce部分声明
第二步:在实现部分写下实现代码
说明:
1:形参表由若干个形式参数组成,它决定了调用过程传递给过程的实参个数和类型。所有形参必须 说明类型,相同类型的形参之间用逗号隔开,不同类型的形参之间用分号隔开.
2:加上var表示传址,不加表示传值
举列测试:[定义两个数交换的过程]
例:用一个过程实现1到n的阶层,实现交换两个变量的值
和其他语言的比较在C等语言中,过程实际上就是一个void类型的返回如
void dotest(int p1,int p2);
那么对应Delphi的就是
procedure dotest(p1,p2: integer);
函数:有返回值。
定义格式:
function 函数名(形参表):函数类型;
[局部声明]
begin
函数语句
end;
函数与过程也分成在本单元中使用的和能够在其它单元使用的。
说明:
1:函数的返回值通过result关键字或函数名返回
列如:
function fat(n:integer):integer;
var
t,i:integer;
begin
t:=1;
for(i:=1 to n do
t:=t*i;
result:=t或fact:=t)
end
函数的调用;
t:=函数名(实参列表)
举列:
总结:在实际开发项目中,我们都是创建一个单元,然后把工程中要用到的函数或过程都放在这个指定 的单元中举列]
过程或函数的重载(method overloading)
在delphi在,充许有名字相同而参数不同的过程或函数,这就是过程和函数的重载(overload)
比如:
[可以在函数或过程后面加上overload关键字就行了]
procedurce test1(v1:integer);overload
procedurce test2(v1:string);overload
为什么要使用重载:
1:举列说明:
2:随便以后维护程序。比如你写了一个test的函数,里面包含了一个整型参数,当程序执行了一段时间 之后,需要test2函数必须也能处理字符串型参。有了重载,你就不必须要再写另外一个函数了。
过程或函数的默认参数:
比如:
procedurce test(A:integer=3);
说明:
1:不能同时把一个默认值指定给多个参数,
function myfun(x,y:integer=3):integer;[错]
改成:function myfun(x:integer=3;y:integer=3):integer;
2:当你声明的函数具有一个以上的参数时,你必须由右到左来指定默认的值,如果最右的参数没有 默认值,那么其它的叁数也不充许指定默认值
如:
pocedurce mypro(i:integer=3;s:string)[错错]
变量,过程或函数的作用域
1: 单元的接口部分与实现部分:
A:接口部分(inte**ce):用来声明其它单元可以访问的类型,常量,变量,函数和过程.其中的 函数和过程只需要列出它们的首部而在实现部分(implementation)进行实现
B:实现部分:用来实现在inte**ce部分声明的函数和过程。即给出这些函数和过程的完整实现 代码。在实现部分也可以声明类型,常量,变量,函数和过程。但它们仅仅能作为本单元的私有 部分
2:公有变量与私有变量:
在单元的接口部分声明的变量属于公有变量,可以被其它单元引用。
在单元的实现部分声明的变量属于私有变量,不能被其它单元引用。
[注意与类form中定义的区别开来] |
|