关于TYPE()和VARTYPE()函数的比较
TYPE(SYS(16)) UVARTYPE(SYS(16)) C
首先,对于type()函数的参数是要加引号的。vartype()则不需要。
其次,2个函数在获取其参数的类型之前,(他们的参数相当于一个变量),先要对这个变量求值,再判断这个值的类型。U是未知或未定义。
VARTYPE(SYS(16)),其中SYS(16)返回的是一个路径字符串,所以VARTYPE(SYS(16))返回的是C ;
TYPE(sys(16)),我们假如sys(16)返回的是这样一个字符串“D:\”,那么TYPE(sys(16))就相当于 TYPE(“D:\”),这个时候,TYPE()函数会把 D:\ 当作一个变量来处理,对其求值,再判断值的类型,但是,我们事先根本就没有定义 D:\ 这个变量,
所以TYPE(sys(16)) 返回的是 U(未定义的类型)
如果改成TYPE(”sys(16)“)返回的就是C 。
应用举例1:(注意 ①和⑤,②和④,④和⑤的对比)
①、qq=5 && qq为N
c="qq"
?TYPE(c) && 相当于 type(“qq”) ,返回N
②、qq="sd" && qq为C
c="qq"
? TYPE (c) && 相当于 type(“qq”) 返回C
③、qq=.t. && qq为L (逻辑型)
c="qq"
? TYPE (c) && 返回 L
④、c="qqq" &&这时候c 作为一变量 ,变量值为字符型
? TYPE ('c') && 返回C
⑤、c=5 && c 作为一个变量 ,变量值为数值型
? TYPE ('c') && 返回 N
补充:
1、Type ( ) 的参数是变量名,如果这个变量不存在,返回 U
VarType ( ) 的参数是变量,如果这个变量还没有使用过,也是返回 U
2、VARTYPE(eExpression [, lNullDataType])
参数 eExpression
指定要返回数据类型的表达式。VARTYPE( ) 返回单个的字符,表明该表达式的数据类型。
下表列出了 VARTYPE( ) 返回的每种数据类型对应的字符 :
返回值 数据类型
C 字符型、备注型、可变长字符型(Varchar)、可变长字符(二进制)
D 日期型
G 通用型
L 逻辑型
N 数值型, 浮点型, 双精度型 或 整型
O 对象型
Q 大二进制对象(Blob)、可变长二进制型(Varbinary)
T 日期时间型
U 未知或变量不存在
X Null
Y 货币型
下表列出了 type( ) 函数所返回的字符值及其对应的数据类型:
C 字符型
N 数值型(或者整数、单精
度浮点数和双精度浮点数)
Y 货币型
D 日期型
T 日期时间型
L 逻辑型
M 备注型
O 对象型
G 通用型
S Screen (用 SAVE SCREEN 命令建立)
U 未定义的表达式类型
3、VARTYPE(eExpression [, lNullDataType])
①、如果eExpression是一个数组,则返回该数组第一个值的数值类型。
②、指定当eExpression包含null值时,VARTYPE()是否返回它的数据类型。如果lNullDataType为“真”(.T.),则VARTYPE()返回eExpression的数据类型。如果lNullDataType为“假”(.F.)或省略,则VARTYPE()返回'X',表明eExpression包含null值。
③、VARTYPE有时会因为环境问题,报错!呵呵
4、 TYPE()有时可以用来判断字段的类型,VARTYPE()却不可以
如果字段 F1 是数值型 N 。
TYPE(FIELD(1)) —> TYPE(”F1”) 而F1的值类型为N ,所以返回N
VARTYPE(FIELD(1)) FIELD(1)的值为字段名“F1”,字符型,所以返回C
[[it] 本帖最后由 szy345 于 2008-9-26 11:27 编辑 [/it]]