- Visual Foxpro 9.0数据库程序设计教程
- 裴海红
- 2496字
- 2025-02-23 03:04:38
3.1 常量与变量
常量是指在程序运行过程中固定不变的数据,在Visual FoxPro中,常量包括数值型常量、字符型常量、日期型常量、日期时间型常量和逻辑型常量。
1.常量
(1)数值型常量
数值型常量即数学中的常数,由数字(0~9)、小数点和正负号构成的,最大长度为20个字符。例如,3.14、-53、5543等。
(2)字符型常量
字符型常量也称字符串,它由中英文字符、数字、空格等ASCII字符组成,使用时必须用定界符括起来,定界符包括单引号(''),双引号("")和方括号([ ])。如果定界符成为常量的组成部分,则应使用另外的定界符括起来。例如,"I’m a teacher."。
注意:定界符的作用是确定字符串的起始位置和终止界限,它本身不是字符型常量的内容。不包含任何字符的字符型常量“”称为空串,空串与包含空格的字符型常量(" ")不同。
(3)日期型常量
日期型常量是用来表示一个日期,其表示方式是用符号{ }将日期括起来,花括号中包含以分隔符“/”分隔的年、月、日3部分内容,还可以用连字符“-”和句点“.”作为分隔符。
①传统日期格式:{MM/DD/YY}或{MM/DD/YYYY},其中MM、DD、YY分别表示月、日、年。
例如,{0617/15}或{06/17/2015},表示2015年6月17日。
②严格日期格式:{^YYYY-MM-DD},其中符号“^”表明该日期格式是严格的,并按照年、月、日的格式来解释日期。
例如,{^2015-06-17},表示2015年6月17日。
注意:系统默认的日期格式为严格的日期格式,若要使用传统的日期格式必须先执行set strictdate to 0命令;若再要用严格的日期格式须先要执行set strictdate to 1命令或通过函数转换才能进行。
(4)日期时间型常量
日期时间型常量是用符号{}括起来的日期时间型数据序列,括号内主要包括日期和时间两部分内容,其格式为{<日期>,<时间>}。<日期>部分的格式与日期型常量相似,<时间>部分的格式为[HH[;MM[:SS]]][A/P]。这里HH、MM、SS分别表示时、分和秒,A(或AM)和P(或PM)分别表示上午和下午。
例如,?{^2015-06-20,11:43:30 A}。
(5)逻辑型常量
逻辑型常量只有两个值:真与假,逻辑真(.T.或.Y.),逻辑假(.F.或.N.),前后两个句点是定界符,不能省略。逻辑型数据只占用一个字节。
2.变量
变量是在命令或程序执行过程中其值可以发生变化的量,主要有字段变量、内存变量、系统变量、对象变量和数组变量5种类型。
(1)字段变量
字段变量是指表中已定义的任意一个字段,由于在一个数据表中字段的值是随记录行的变化而变化的,所以它为变量。字段变量是定义在表中的变量,随表的存取而存取,因而是永久性变量。字段名就是变量名,变量的数据类型为Visual FoxPro中的任意数据类型,字段值就是变量值。字段变量通常简称为字段。
(2)内存变量
内存变量是指内存中的一个存储单元,该单元的名称称为内存变量名,该单元内存放的数据称为内存变量的值,而内存变量的类型取决于内存变量值的类型,它可以是数值型、字符型、逻辑型、日期型和日期时间型。
Visual FoxPro的内存变量分为“系统内存变量”和“用户内存变量”两种。前者是启动Visual FoxPro系统后自动产生的内存变量,它们决定系统的运行状态。后者则是用户定义的内存变量。用户最多可以定义1 024个内存变量。
①内存变量的命名规则:
a.以字母(汉字)或下画线开头。
b.只能含字母、数字和下画线,不允许有空格和特殊字符。
c.不应超过128个字符,其中每个汉字占2个字符。
d.不应是Visual FoxPro的保留字,也不应是保留字的前4个字符(如该变量只由4个字符组成)。
②使用STORE命令为内存变量赋值。
格式1:<内存变量名>=<表达式>
格式2:STORE <表达式> TO <内存变量名列表>
功能:计算<表达式>,并将计算结果赋值给内存变量。
说明:表达式可由常量、变量、函数和运算符组成。内存变量名列表中的内存变量应用逗号分隔,该命令可以同时为多个内存变量赋值。
例如:
store 7 to m &&将7赋值给变量m
store 5*12 to a,b &&先计算表达式5*12的值,再将值分别赋给a,b
注意:在store 5*12 to a,b中,不能改写为a,b=5*12。
③直接为内存变量赋值。使用符号“=”可以直接为内存变量赋值。
例如:
c1 =2 +7 &&将表达式2+7的和赋值给变量cl
c2 = cl +9 &&将计算表达式c1 +9后的值18赋给变量c2
说明:一个变量的值可以不断变化,最终结果是它最后一次的赋值。
④显示内存变量。可以使用DISPLAY MEMORY命令或LIST MEMORY命令来查看已定义的变量。
格式:DISPLAY | LIST MEMORY
功能:该命令用于显示已定义的变量名、作用范围、类型和值。
说明:DISPLAY命令用于分屏显示,LIST命令用于滚屏显示。
【例1】定义内存变量M的值为5,MN的值为“student”,并在屏幕上显示出来。
在命令窗口中输入:

⑤释放内存变量。内存变量最多可定义1 024个,为了节省存储空间,变量使用完以后应及时释放,可以使用以下命令之一来释放存储空间。
格式1:RELEASE ALL
功能:该命令用于释放全部内存变量。
格式2:RELEASE<内存变量列表>
功能:该命令用于释放指定的内存变量。
格式3:RELEASE ALL [LIKE模式| EXCEPT模式]
功能:该命令用于释放与指定模式相匹配的内存变量。
说明:[LIKE模式]子句用于指定要释放与指定的模式相匹配的所有变量,可含通配符。[ EXCEPT模式]子句用于指定要释放除与指定的模式相匹配之外的所有变量,可含通配符。
格式4:LEAR MEMORY
功能:该命令用于释放全部内存变量。
例如:
RELEASE cl,c2 &&释放变量c1,c2
DISPLAY MEMORY &&显示的内存变量就只剩下a,bl,b2
RELEASE ALL LIKE b* &&释放变量名以b为开头的所有变量
DISPLAY MEMORY &&显示的内存变量就只剩下a
⑥表达式显示命令。
格式:?|??<表达式>
功能:计算表达式的值,并将其结果显示在屏幕上。
说明:“?”表示换行显示结果,“??”表示从当前行的当前列显示结果。
【例2】内存变量的应用。
在命令窗口中输入:

(3)系统变量
Visual FoxPro提供了一批系统变量,它们都是以下画线开头,分别用于控制外围设备(如鼠标、打印机等)、屏幕输出格式或处理有关计算器、剪贴板和日历方面的信息。
(4)对象变量
面向对象语言中特有的变量类型,是一种集合变量,不仅可以包含数据,还可以包含属性和方法。
(5)数组
数组是按一定顺序排列的一组内存变量,在内存中用一片连续的区域来存放,数组用统一的名称来表示,称为数组名,数组中的每一个内存变量都称为数组的元素,数组元素用数组名及它在数组中的排列标号(简称下标)来表示。例如,A(1)、A(2)、A(3)、A(4),其中A表示数组名,1、2、3、4为下标。根据下标的个数又可以把数组分为一维数组和二维数组,例如A(3)表示一维数组、B(3,4)表示二维数组。