第2章 数据类型及数据运算.doc_第1页
第2章 数据类型及数据运算.doc_第2页
第2章 数据类型及数据运算.doc_第3页
第2章 数据类型及数据运算.doc_第4页
第2章 数据类型及数据运算.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章 数据类型及其运算Visual FoxPro 不仅是一种数据库管理系统,同时也有高级程序设计语言的功能。计算机语言的基本要素是数据类型、常量、变量、表达式、控制结构、过程和函数。21 数据类型在VF6中,常用的字段数据类型有11种,常量、内存变量、函数和表达式的类型有6种。211 字段数据类型在实际工作中所采集到的原始数据,通常要经过加工处理,变成对用户有用的信息。而数据处理的基本要求是对相同类型的数据进行选择归类。为了适应存储数据的需要,VF6提供了许多数据类型,常用的字段数据类型有11种。1. 字符型(C型) 由字母、汉字、数字、空格、符号和标点等组成,通常用来存储姓名、单位、地址等类信息,宽度由用户定义,但不超过254个字节。信息量较大时宜放到备注型字段中。2. 数值型(N型)用于表示数量,它由数字09、一个符号(+或-)和一个小数点(.)组成,长度120个字节。小数点的位置和字段的宽度由用户创建该字段时指定,宽度包括小数点和小数位数。数据还可以分为整数、实数和浮点数等。3. 逻辑型(L型)用于存储只有两个值即真(.T.)和假(.F.)的数据,其长度固定为1个字节。输入T(t)或Y(y)表示真值;输入F(f)或N(n)表示假值,实际存储时只存放T或F这两个字母中的一个。4. 日期型(D型) 存储日期数据,其存储格式为“YYYYMMDD”,占8个字节。显示格式有许多种,常用的为“MM/DD/YY”,它受SET DATE、SET MARK、SET CENTURY 命令设置值的影响。取值0001/1/19999/12/31。5. 备注型(M型)用于数据块的存储,宽度固定为4个字节。字段内容并不存储在记录中,而是存放在系统为每个含有备注型字段的表自动建立的一个和表同名的备注文件(后缀为.FPT)中,记录中仅存储指向备注文件中相应内容的指针。6. 通用型(G型)存储OLE对象,其中包含对OLE对象的引用。一个OLE对象的具体内容可以是一个电子表格或一个字处理器的文档、图片、声音等。这些OLE对象是用其他应用程序建立的,该字段类型的长度固定为4个字节。7. 日期时间型(T型)用于存储日期和时间值,存储格式为“YYYYMMDDHHMMSS”。其日期部分显示格式同日期型字段;时间部分的显示格式受SET HOURS 和SET SECONDS 命令设置的控制,取值00:00:00 AM.11:59:59 P.M. 。8. 货币型(Y型)使用金钱时可使用货币数据类型以代替数值类型,其存储占8个字节。9. 整数型(I型)用于无小数部分数值的存取,只用于表中字段的定义,存储用二进制形式表示,占4个字节。10. 双精度型(B型)用于取代一般的数值类型,以便能提供更高的数值精度。它只用于表中字段的定义,采用固定存储长度的浮点数形式,存储占8个字节,双精度类型不同于数值类型,其小数点位置由输入的数据值决定。11. 浮点型(F型)以浮点数的形式存储数值数据,用较精确的位数存储数据,常用于科学计算,宽度的规定和数值型相同。212 常量常量是指在程序运行过程中其值不发生变化的量。FoxPro 支持字符、数值、日期、日期时间、货币和逻辑6种类型的常量。1. 常量分类1) 数值型数值型常量是可以带正负号的整数或小数(正号可省略),还可以用科学记数法表示如2.5E+15。这样表示的常量是N型,而不是F型。2) 字符型字符型常量是用定界符括起来的字符串。定界符有3种,即单引号、双引号和方括号。在定义和使用字符型常量时需要注意:在字符串的两端必须加上定界符,否则系统会把该字符串当成变量名。如:“姓名”是一个变量名,而“”姓名”是一个常量字符串。定界符只能是ASCII码字符(即半角字符),不能是全角字符。左、右定界符必须匹配。即如果左边是双引号,那么右边也必须是双引号。定界符可以嵌套,但同一种定界符不能互相嵌套,具体例子如下所示。合法字符串 古语云:“天下没有不散的宴席”非法字符串 “古语云:“天下没有不散的宴席”3) 逻辑型逻辑型常量也称布尔型常量。它只有两种值,即逻辑真值或逻辑假值。逻辑真可以用.T.或.Y.表示,也可以用.t.或.y.来表示;逻辑假可以用.F.、.N.、 .f.、.n.来表示。注意:字母T、N等的两端必须紧靠有小圆点(圆点与字母之间不能有空格)。圆点和字母都必须是半角符号,不能是全角字符。 4) 日期型日期型常量一定要包括年、月、日3个值,每两个值之间由一个分隔符(如斜杠“/”)隔开,日期型常量要放在一对花括号中,开始位置上再加上一个“”符号(VF6中采用严格的日期格式,即yyyy/mm/dd)。例如2002/02/20。空值表示为、 、/、:。其显示格式按照系统原来默认的方式是MM/DD/YY,但可以改变,其命令如下所示。SET CENTURY ON &YYYY/MM/DD(年用四位数表示)SET DATE TO YDM &YYYY/MM/DDSET MARK TO _ &YYYY-MM-DD在VF6中,可以通过设置“SET STRICTDATE TO 0 ”从而不进行严格日期格式的检查。运行时VF6默认设置为0,在STRICTDATE 设置为0的情况下,无效的Date和Date Times将作为空日期。5) 日期时间型该类型常量值中既含日期又含时间,日期值包括年、月、日,时间值包括时、分、秒,其中时分秒的分隔符为冒号(:),书写方式近似于日期型。例如2002/01/15 10:00 p,空值表示为-,:、-,:、-,:和-,:。6) 货币型货币型常量用符号“$”来标识,如 $ 123.3。2. 定义常量名在程序设计中,可以使用# DEFINE 预处理器命令为某个常量值命名。例如,在程序中令PI作为圆周率3.1415926536的一个常量名的定义方法为# DEFINE PI 3.1415926536在使用了此定义后,以后凡遇到要使用圆周率的地方,都可以用常量名PI来表示。213变量变量是指在程序运行过程中其值可能发生变化的量。变量是程序的基本单元,在VF6中,变量分为字段变量、内存变量、数组变量、系统变量和对象变量等5类。1. 字段变量字段变量是在数据库中定义的变量,每个字段名就是一个字段变量。字段变量是永久变量,它是一种多值变量,数据表中的每一条记录对应某一字段都有一个取值。当用字段名作变量时,其当前值就是表的当前记录的值。2. 内存变量 内存变量是用户通过命令或程序临时定义的变量,表示一块工作单元。它具有字符型、数值型、日期型、时间型、逻辑型和货币型等多种数据类型。VF6的内存变量与其他高级语言中的变量有所不同,它不需要事先说明其类型,其数据类型是根据当前所存储的数据的类型决定的。必须首先给所使用的内存变量赋一个值,这个变量才可以使用,否则,系统会提示:内存变量没有找到!1) 内存变量名内存变量名可由字母、汉字、数字或下划线组成。给变量命名,应力求做到“见名知义”,建议: 变量的第一个字符标识该变量的数据类型,一般采用小写的类型标识字母,如“nVarl”应解释为N型的变量。这样做除了意义明了之外,还可避免使用系统已使用的单词和变量(注:系统内存变量名的第一个字符是下划线)。 变量名的其余字符标识该变量的含义。如由变量名“cName”可知它是C型变量,内容是某个人的姓名。2) 建立内存变量建立内存变量有两种方式,一种是使用STORE赋值命令,它可以一次给多个内存变量赋值;另一种是使用赋值语句(等号“”)。(1) STORE 赋值语句语法:STORETO|例如:STORE 7 To nVar1 &定义N型内存变量nVarl,,其值为7STORE “李梅” To cName1,cName2 &定义C型内存变量cName1和cName2,其值均为“李梅”(2) 赋值语句(等号“”)语法:|=例如:nVar2=10 &定义N型内存变量nVar2,其值为103) 输出内存变量要输入内存变量可以使用如下命令。语法:?|? PICTUREFUNCTIONAT功能:计算表达式并输出结果。其中:? 表示在新的一行打印输出;? 表示在当前行打印输出;PICTURE 输出描述表达式FUNCTION 输出格式表达式,按指定格式输出;AT 列位置坐标。【例2.1】 输出变量nA1、nA2、nA3的值。STORE 2 TO nA1, nA 2, nA 3? nA1, nA2, nA32 2 2? nA1, nA2, nA32 2 2 2 2 2 &在前面的结果行后面接着输出内存变量内部结构显示可通过DISPLAY MEMORYLIKETO PRINTER | TO FILE命令显示。释放内存变量可通过RELEASE命令操作。4) 字段变量与内存变量的比较两者最大区别是:字段变量是表结构的一部分,因此离不开表。要使用字段变量,必须首先打开包含该字段的表。而内存变量与表无关,不打开表照样可以使用。内存变量和字段变量可以同名,此时,将优先存取字段变量,屏蔽同名的内存变量。若要明确指定访问内存变量,则应在内存变量名前加上指别符M.或者M-(由减号加大于号组成),即M.或M-。3. 数组变量数组变量是一种有组织的内存结构变量,它的若干性质和内存变量是一样的。但它是一种结构式变量,是具有相同名称而下标不同的一组有序内存变量。VF6允许定义一维和二维数组,数据在使用之前需要先定义。1) 数据元素及其引用数组中每个有序变量构成数组的成员,称这为数组元素。数组元素的名称由数组名和括号括起来的下标组成。如AA(1),表示一维数组的第1个元素;BB(2,3)表示二维数组的第2行、第3列元素。数据元素的引用说明如下: 数组下标使用圆括号,二维数组的下标之间使用逗号隔开; 数组的下标可以是常量、变量和表达式,如nA(1)、nA(b1)、nA(a+b); 数组的第1个下标是1,也就是说数组下标是从1开始的; 数组元素的类型为最近一次被赋值的类型; 数组元素和简单内存变量一样都可以被赋值和引用。2) 定义数组VF6中的数组和其他高级语言中的数组有所不同,数组本身是没有数据类型的,各种数组元素的数据类型与最近一次被赋值的类型相同。也就是说,VF6中的数组实际上只是名称有序的内存变量。创建数组的命令如下所示。语法:DIMENSION | DECLARE | PUBLIC (,) , (,)功能:定义数组。数组名是作为一个内存变量名来管理和命名的,所以命名规则和管理与内存变量相同。在程序中,DIMENSION、DECLARE表示定义的是局部数组,而PUBLIC定义的是全局数组。前者只对当前程序有效,后者对整个程序有效。但若在命令窗口中,它们定义的均为全局数组。【例2.2】定义A(2)、B(2,2)数组。DIMENSION A(2), B(2,2)这表示数组A中有两个元素,分别为A(1)和A(2)。数组B中有4个元素,分别为B(1,1)、B(1,2)、B(2,1)和B(2,2)。3) 数组赋值和引用数组的赋值和引用遵循内存变量的规则。【例2.3】 定义数组AA(2)、AB(2,2),赋值并输出。DIMENSION AA(2),AB(2,2)AA(1)=”ABCD”AA(2)=.T.AB(1,2)=AA(1)AB(2,2)=123AB(2,1)=11.1? AA(1),AA(2,),AB(1,2),AB(2,2)屏幕上显示结果如下所示。ABCD .T. ABCD 1234) 显示数组存储内容可以使用显示内存变量的命令显示数组的存储情况。DISPLAY MEMORY LIKE A *AA Pub A (1) C”ABCD”(2) L.T.AB Pub A (1,1) L.F(1,2) C”ABCD”(2,1) N 11.1 (11.100000000)(2,2) N 123 (123.00000000) 已定义2个变量,占用了22个字节 从结果可以看出数组内部的存储结构,数组元素AB(1,1)没有赋值,则自动为逻辑型,且值为.F.。数组也可仅对数组名赋值,此时表示该数组中所有的数据元素具有相同的值。如:STORE 1 TO A,则表示数据元素AA(1)和AA(2)的值均为1。 4.系统变量 系统变量是特有的变量,是系统内部提供的,学会使用系统变量会带来许多方便。系统提供的系统变量很多,在使用DISPLAY MEMORY 命令显示内存变量时,可以看到这些变量的当前值。下面举例说明这些系统变量的使用方法。 【例2.4】通过_CALCVALUE系统变量将一个数字传到计算器中,然后通过计算器的计算,输出计算结果。 在命令窗口中输入: CLEAR &清屏幕 _CALCVALUE=36 &给该系统变量赋值 ACTIVATE WINDOW calculator &显示计算器得到如图2.1所示结果。 单击计算器的“”,然后输入“30”,再单击“”,得到66,在命令窗口中输入如下命令 ?_CALCVALUE &输出计算的结果图2.1 FoxPro激活的计算这时在屏幕上显示66.00,这个过程是利用_CALCVALUE 系统变量将一个数字传到计算器中,然后从计算器获取数据并显示在屏幕上。22 函 数 函数就像命令一样,是系统内部“编制”好的一段程序,只要调用它,就能得到相应的输出结果。 函数的一般形式如下所示。 函数名(,.,) 一个函数必须有一个函数名,函数名后面必须跟一对圆括号,圆括号中可以有0到n个参数,函数根据用户给定的参数,经过计算返回一个唯一的值,称为返回值。 VF6提供了大量的函数,下面选择较为常用的函数予以介绍,每个函数的具体使用方法可参阅手册或帮助信息。在使用VF6时,掌握的函数越多,操作就会越方便。 221 数值处理函数 数值处理函数包括三角、对数、指数、数值转换和测试等函数。常用的数值处理函数见表2.1。表2.1 常用的数值处理函数语 法功 能返回类型命令窗口结果INT()返回的整数部分N?INT(123.58)123SQRT()返回的平方根N?SQRT(72-4*2*4)4.12MOD(,)求以为被除数,为除数的模N?MOD(100,3)?MOD(100,-3)1-2ROUND(,)返回的取个小数位后的四舍五入值N?ROUND(15.2345,3)?ROUND(-15.23,1)15.235-15.2ABS()返回的绝对值N?ABS(-4*2)8EXP()返回ex的值,(x为)N?EXP(1)2.72LOG()返回以e为底的自然对数值N?LOG(2.72)1MAX(,)返回、中最大值N?MAX(5,3,9)?MAX(-15,1,3)93MIN(,)返回、中最小值N?MIN(5,3,9)?MIN(-15,1,3)3-15以上函数中,MOD()函数值得注意,它的功能是求模。若两参数的值大于0,则模为余数;若两参数一正一负,则模为余数与之和;若两参数均为负,则模为余数取反。最终,模的符号和相同。222 字符处理函数字符处理是实现文字编辑的重要手段,字符处理的主要函数包括字符表达式测试函数和字符串的截取、加长与转换函数。 1.字符表达式测试函数 常用的字符表达式测试函数见表2.2。表2.2 常用的字符表达式测试函数语法功能返回类型命令窗口结果AT(,) 返回在从左边第次数出现的位置N?AT(A,ABCDA)?AT(A,AbA,2)13RAT(,)返回在从右边第次数出现的位置N?RAT(A,ABCDA)?RAT(A,AbA,2)51LEN() 返回的长度(字节数)N?LEM(A b A)5ISALPHA()测试第一个字符是否是字符L?ISALPHA(A b A)?ISALPHA(2AbA).T.F.ISDIGIT()测试第一个字符是否是09数字L?ISDIGIT(A b A)?ISDIGIT(2AbA).F .T.ISLOWER()测试第一个字符是否是小写L?ISLOWER(pRO)?ISLOWER(PRO).T.F.ISUPPER()测试第一个字符是否是大写L?ISUPPER( pRO )?ISUPPER( PRO ).F.T. 2.字符串的截取、加长与转换函数 常用的字符串截取、加长与转换函数见表2.3。表2.3 常用的字符串的截取加长与转换函数语法功能返回类型SUBSTR(,)取一个串的子串CLEFT(,)从左边截取个字符CRIGHT(,)从右边截取个字符CTRIM()截取尾部空格CRTRIM()从右边截取空格(功能等同于TRIM ()CLTRIM()从左边截取空格CALLTRIM()去掉左、右两边的空格CSPACE()返回长度为的空格串CUPPER()将中所有的小写字母转换成大写字母CLOWER()将中所有的大写字母转换成小写字母C 说明:1 在SUBSTR()函数中,指待处理的母串,指取子串的起点,可选参数指所要截取的长度,如果省略该参数,则指从起点截取至串尾。2 LEFT()和REGHT()函数都可以看成是SUBSTR()函数的特例,例 LEFT(,)等价于SUBSTR(,1,)。 有关例子参见表2.4。表2.4 字符串的截取加长与转换函数示例命令窗口结果命令窗口结果C=”Beijing University”?LEFT(C,7)Beijing? SUBSTR(C,4)jing University?RIGHT(C,4)Sity? SUBSTR(C,4,3)Jin?LEN(C)18命令窗口结果命令窗口结果D=”-FoxPro-”?TRIM(D)-FoxPro?LTRIM(D)FoxPro-?RTRIM(D)-FoxPro?ALLTRIM(D)FoxPro?SPACE(4)-?LOWER(D)-Foxpro-?UPPER(D)-FOXPRO- 223 日期与时间函数 常用的日期与时间函数见表2.5,有关例子参见表2.6。表2.5 常用的日期与时间函数语法功能返回类型DATE()返回当前系统日期DTIME()返回当前系统时间CDATETIME()返回当前系统日期与时间CYEAR()返回的年份NMONTH()返回的月份NCMONTH()以英文单词形式返回中的月份CDAY()返回对应月份中的号数NDOW()返回对应的当天星期几NCDOW()返回对应的当天星期几C表2.6 常用的日期与时间函数示例命令窗口结果命令窗口结果TODAY=DATE()02/12/2002?DAY(TODAY)12?DOW(TODAY)3?CMONTH(2002/04/11)April?YEAR(TODAY)2002?MONTH(TODAY)2224 类型转换函数1.字符型和数值型之间的转换常用的字符型和数值型之间的转换函数见表2.7,有关例子参见表2.8。表2.7 字符型和数值型之间的转换函数语法功能返回类型STR(,)将转换为字符型并返回CVAL()将转换为数值型并返回NASC()返回中第1个字符的ASCII值NCHR()返回对应的ASCII字符C 说明:1 STR()函数中是待转换的数,可选参数是返回的字符串的长度,可选参数是返回的字符串中小数点后面的位数。如果指定的字符串长度大于的长度,那么数字的前端用空格填充。若小于整数部分的长度,且不指定小数位数则返回一串星号“*”。如果不指定小数位数,那么只返回的整数部分,若有小数部分则进行四舍五入。若指定,则返回指定的小数位数,并按该有效位数进行四舍五入。2 CHR()函数的参数的值必须在0255之间,否则会产生出错信息。表2.8 字符型和数值型之间的转换函数示例命令窗口结果命令窗口结果PI=3.14159?STR(3.6)4?STR(100+PI)103STORE”124” TO A,B? STR(100+PI,10,5)103.14159?VAL(A)+VAL(B)248.00? STR(100+PI,10,4)103.1416?ASC(“ABCD”)65?STR(100+PI,10,2)103.14?CHR(65)A2. 字符型、日期型、日期时间型之间的转换函数常用的字符型、日期型、日期时间型之间的转换函数见表2.9。表2.9 字符型日期型日期时间型之间的转换函数语法功 能返回类型CTOD()将转换为日期型并返回DDTOC(),1将转换为字符型并返回CDTOS()以YYYYMMDD格式返回的值CCTOT()将转换为日期时间型并返回TTTOC(,1 | 2)将转换为字符型并返回CDTOT()将转换为日期时间型并返回TTTOD()将转换为日期型并返回D225 与数据表操作有关的函数常用的与数据表有关的操作与测试函数见表2.10。表2.10 与数据表有关的操作与测试函数语法功能返回类型ALIAS(|)返回当前工作区(不带参数)或指定工作区或指定表别名的表的别名CSELECT(0|1|)返回当前工作区的区号(0),或当前没有使用的最大工作区号(1),或表别名所用的工作区号NRECNO(|)返回当前工作区(不带参数)或指定工作区或指定表别名的当前记录号NRECCOUNT(|)返回当前工作区(不带参数)或指定工作区或指定表别名的记录总数NBOF(|)测试当前工作区(不带参数)或指定工作区或指定表别名的记录指针是否在文件首LEOF(|)测试当前工作区(不带参数)或指定工作区或指定表别名的记录指针是否在文件尾LFCOUNT(|)返回当前工作区(不带参数)或指定工作区的或指定表别名的字段数目NFIELD(,|)返回当前工作区(只带一个参数)或指定工作区或指定表别名的工作区中打开表的第个字段的字段名NDELETED(|)测试当前工作区(不带参数)或指定工作区或指定表别名的当前记录是否被逻辑删除LUSED(|)测试当前工作区(不带参数)或指定工作区是否已被使用,或指定的表别名是否已被使用L226 其他函数1.求值函数求值函数对实现程序的生成和自动变换十分有用,在此讲解两个求值函数。1)宏替换符号&是一个特殊的函数,也可以把它看成一个特殊的操作符。语法:&.“&”的作用是将字符型内存变量(包括数组元素)的内容替换出来,它的返回类型与字符型内存变量的值去掉字符定界符后的值的类型一致,可以是各种数据类型。宏替换的结束标志是在字符型内存变量后加一个圆点(.)。【例2.5】 宏替换符号&使用实例。c_nVar =”123”?& c_nVar123 &取变量c_nVar中的值,结果为数值型c_nVar”Fox”?”Visual & cVar.Pro” &结果为字符型,字符串为”Visual FoxPro”?& cVar &系统显示出错信息“找不到变量Fox!”,因没有定界符的字符串,系统默认为变量名。Fox=”ABC”? &cVar &取变量cVar中变量Fox的值。ABC2) EVALUATE()语法:EVALUATE()功能:计算并返回结果,返回值的类型为字符、数字、日期、日期时间、货币、逻辑值或者备注。cVar”Fox”Fox=”ABC”?EVALUATE (cVar) &取变量cVar中变量Fox的值。ABC以上示例中,其作用等价于宏操作,但这个函数的功能远比&功能强。2.与文件有关的函数在程序设计或数据库操作过程中,经常要涉及到文件问题,常用的函数有以下两种。1) GETFILE()语法:GETFILE(扩展名,标题)功能:打开系统内部的打开对话框,然后根据用户的选择返回文件名。【例2.6】将文件GenHtml.PRG的文件全名放入变量cFILE。 cFILEGETFILE(PRG) &系统打开如图2.2所示的打开对话框 ? cFILE &选择文件GenHtml.PRG后,显示cFILE中的内容C:PROGRAM FILESMICROSOFT VISUAL STUDIOGenHtml.PRG 图2.2“打开”对话框2) PUTFILE()语法:PUTFILE(提示,文件名,扩展名)功能:将当前文件另存为一个文件。这个函数的功能和GETFILE()格式相似,只是显示“另存为”对话框。如输入cFILEPUTFILE(“,GENHTML,PRG”)则首先显示“另存为”对话框,在文件名文本框中显示GenHtml.PRG文件名,如果用户不想用这个文件名,可重新选择文件名或在文本框中输入文件名,根据输入的文件名存储当前的文件。3.显示信息函数在程序设计过程中,经常要显示一些信息,例如提示信息、错误信息等,下面的函数就是用于显示这些信息的。语法:MESSAGEBOX(,)功能:以窗口形式显示信息,返回值为数字。“信息文本”是要在对话框中输出的信息,“对话框标题”表示对话框的标题文字,“对话类型”有很多选择,表2.11中给出了不同信息表示的不同含义。在该函数的对话框中给定不同的对话类型值,在显示的窗口中将显示不同的按钮、图标和默认按钮。而且,不同类的对话类型值可以组合使用,如1+64+0表示使用“确定”和“取消”按钮,图标是“信息”,默认按钮为第1个按钮。表2.11 对话框类型及含义对话类型值对话框按钮对话类型值图标对话类型值默认按钮0“确定”按钮16“终止”图标0第1个按钮1“确定”和“取消”按钮32“问号”图标256第2个按钮2“终止”、“重试”和“忽略”按钮48“感叹号”图标512第3个按钮3“是”、“否”和“取消”按钮64“信息”图标4“是”和“否”按钮5“重试”和“取消”按钮【例2.7】使用对话框显示“提示信息”(见图2.3)。nMessage=MESSAGEBOX(“提示信息”,0,提示信息对话框)? nMessage1 &对话框打开时,默认按钮为第1个从图2.3可以看出,对话框中使用了一个按钮,显示的信息是“提示信息”。【例2.8】在对话框中使用3个按钮,并使用“终止”图标(见图2.4)nMessage=MESSAGEBOX(“使用3个按钮并带有终止图标”,3+16+256,提示信息对话框)?nMessage2 &对话框打开时默认按钮为第2个 图2.3 提示信息框图 图2.4 带有图标的对话框这是3个按钮并带有终止图标的对话框,单击“是”按钮返回6,单击“否”按钮返回7,单击“取消”按钮返回2。4.显示系统信息函数SYS()语法:SYS()功能:返回值为一个反映当前系统状态信息的字符串。例如? SYS(2003) &功能等同于函数CURDIR()PROGRAM FILESMICROSOFT VISUAL STUDIOSYS()函数中,的值应根据VF6提供的输入(具体的可查看“帮助”),不能随意给定。2.3 表 达 式表达式是指由变量、常量、函数和相应的运算符组合得到的一组有物理意义的式子。变量、常量和函数,前面已讲过,下面讲解运算符和表达式。231 运算符运算符是处理同类数据运算问题的符号。运算符也叫操作符,它表示在操作数(参与运算的数据)上的特定动作。比如在算术式12中,1和2是操作数,是运算符。带两个操作数的操作符叫双目操作符,带一个操作数的操作符叫单目操作符。如在12中,是双目操作符,它表示前后两个数相加;在2中,是单目操作符。根据操作数和操作结果值的类型可以把运算符分为以下5类。1.算术运算符算术运算符运用于数值数据(指数值型、浮点型、双精度型和整数型)和货币数据,其优先级从高到低的顺序及有关例子参见表2.12。表2.12 算术运算符运算符说明例子结果()分组优先?2*(4+2)12单目-取数的相反数?-100-100单目+取数的原值?+3.143.14*或乘幂?238.00%取模?100%331*乘?7*963/除?10/33.33+加?$12+$4557.0000-减?$67-2146.00002.字符运算符对于字符类型的数据,可以使用的操作符只有3个,即、和$,而运算的优先级则是$,有关例子参见表2.13。表2.13 字符运算符运算符操作例子结果将两个串简单连接在一起,参加连接的串可以是字符串、字符字段、内存变量等?”Visual-”+”FoxPro”?”计算机”+文化?”计算机- ”+文化Visual-FoxPro计算机文化计算机-文化连接两个字符串,并将前一个字符串的尾部空格移至后一个字符串之后?”计算机-”-文化?” Windows- ”-“98”计算机文化-Windows98-$包含比较运算。用于查看一个串是否包含在另一个串中?”I”$”Beijing”?”i”$”Beijing”.F.T.3. 日期时间运算符对于日期类型、日期时间类型的数据,其运算符只有和两个,具体的运算含义及相关例子参见表2.14。表2.14 日期时间运算符运算符操作例子结果+日期型数据加天数运算或日期时间型数据加秒数运算?2002/02/02+20?2002/02/20 12:5:20+2001/22/200202/20/2002 12:05:40 PM-日期型数据减日期型数据或日期型数据减天数运算或日期时间型数据减日期时间型数据(返回秒数)或日期时间型数据减秒数?2002/02/20-2002/01/20?2002/02/01-60?2002/03/01 12:5:20-;2002/03/01 12:5:10?2002/01/01 12:5:20-103112/03/20011001/01/2002 12:05:10 PM4关系运算符关系运算符用于同类型数据之间的比较运算,并返回一个逻辑值来表示所比较的关系是否成立。相关符号及例子参见表2.15。表2.15 关系运算符运算符操作例子结果小于比较运算?3大于比较运算?32.T.=等于比较运算?”abcd”=”ab”.T.,,!=不等于比较运算?53.T.=小于或等于比较运算?56=大于或等于比较运算?35=45.F.=字符串精确等于比较?”abcd”=”ab”.F.注意:1 关系运算符仅对两个同类型的表达式进行比较,操作对象可以是数值型、字符型、日期型、逻辑型、货币型和备注型等,产生的结果均为逻辑型。2 字符型表达式的比较。ASCII字符(半角字符)比较 按照其码值的大小来比较。如字母A的ASCII码值是65,a的ASCII码值是97,所以表达式A薄的值是.F.。字符串的比较是按照从左向右的顺序逐个字符进行比较的,如“ABC=ACD”用于确定两个字符串是否完全相等,完全相等的含义是两个字符串应该是长度相同,且每个位置上的字符都必须分别相同。两个字符串作=比较时,其比较结果与SET EXACT 命令的状态有关。当其状态为ON时,=”和=的比较结果一致,但当其状态为OFF时,=可用于两个字符串部分匹配的场合,对于A=B,如果B中每个字符串与A中前面的每个相应字符匹配,则其值为.T.。例如SET EXACT OFF?ABCD=ABC &显示结果为.T.SET EXACT ON?ABCD=ABC &显示结果为.F.3 日期型与日期时间型表达式的比较 是按年月日的顺序进行比较,其中年月日又分别按其数值的大小进行比较,如2001/09/02(2001年9月2日)和2000/09/02(2000年9月2日)进行比较,表达式2001/09/022000/09/02为真。同样为真的有2001/09/022000/08/02和2000/09/022.AND.”AB”=”B”.F.OR.逻辑或,用于对两个逻辑值进行或运算?”AB”=”A”.OR.”AB”$”BCA”.F.2.3.2 表达式1表达式的概念任何有值的对象都可以成为表达式,常量、变量、函数是最基本的表达式,这些基本表达式按照运算符的规则加上各种运算符就可以构成各种复杂的表达式。2表达式的类型根据表达式所用到的运算符,可以把表达式分为6种。1)数值型表达式由数值型的常量、变量、函数和算术运算符构成的表达式,其运算结果仍为数值型。2)字符型表达式由字符型的常量、变量、函数和字符运算符+和-组成的表达式,其运算结果仍为字符型。3)日期型(日期时间型)表达式由日期型或数值型的常量、变量和日期运算符+和-(天数/秒数)组成的表达式,其运算结果为日期型(日期时间型)或数值型。4)关系型表达式由关系运算符和数值表达式、字符表达式、日期表达式及货币表达式组成的,但运算符两边的数据类型必须一致,其运算结果为逻辑值。5)逻辑型表达式由逻辑运算符和逻辑型的常量、变量、函数及关系表达式组成,其运算结果仍是逻辑值。6)货币型货币型表达式的运算对象和运算结果都是货币型,其运算符同算术运算符,运算规则同数值型表达式。如yVarl=$856.00?yVarl+$100 &显示的结果为956.0000?yVarlnum2 AND abcadOR num2+20=200 &显示结果为.T.3表达式值的显示显示表达式的值,可使用单问号?命令或双问号?命令。4表达式生成器在学习计算机语言时,最难的一点就是书写表达式。将自然语言描述的问题用表达式来描述,需要很多数理逻辑知识

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论