| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3799 人关注过本帖
标题:关于TYPE()和VARTYPE()函数的比较
只看楼主 加入收藏
szy345
Rank: 4
来 自:江苏——南京
等 级:贵宾
威 望:14
帖 子:336
专家分:14
注 册:2008-8-6
结帖率:100%
收藏
 问题点数:0 回复次数:2 
关于TYPE()和VARTYPE()函数的比较
TYPE(SYS(16))       U
   VARTYPE(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]]
搜索更多相关主题的帖子: VARTYPE 函数 
2008-09-26 11:23
zygyhj
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-8-30
收藏
得分:0 
原来如此
2008-09-26 21:28
wanfei
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-10-23
收藏
得分:0 
学习了,谢谢!
2008-10-07 14:27
快速回复:关于TYPE()和VARTYPE()函数的比较
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017434 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved