| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4995 人关注过本帖
标题:问ASCAN函数问题?
只看楼主 加入收藏
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
结帖率:98.98%
收藏
已结贴  问题点数:20 回复次数:15 
问ASCAN函数问题?
ASCAN(ArrayName, eExpression [, nStartElement [, nElementsSearched [, nSearchColumn [, nFlags ]]]])
我要不分大小写,这几个参数,怎么看的,看不懂。nFd=Ascan(aMyAry,ary1(nCount),1,0,0,1) &&或者 nFd=Ascan(aMyAry,upper(ary1(nCount)))
nFd=Ascan(aMyAry,ary1(nCount),1,0,0,1),我是1个个试,才试出这个。。
目前AFIELDS(aMyAry,Alias())的全是大写的,所以我用upper(ary1(nCount)),万一,改天,AFIELDS(aMyAry,Alias())变为小写了,怎么办。所以还是要在Ascan()搞。

local ary1(5)
ary1(1)="Name1"
ary1(2)="Name2"
ary1(3)="Name3"
ary1(4)="Name4"
ary1(5)="Name5"
Create Cursor tmp(Name1 C(20),Name2 L,Name3 N(20),Name4 B(2),Name5 L)
nFieldNum=AFIELDS(aMyAry,Alias())

FOR nCount = 1 TO alen(ary1)
    nFd=Ascan(aMyAry,ary1(nCount),1,0,0,1) &&或者 nFd=Ascan(aMyAry,upper(ary1(nCount)))
    if nFd>0
       ?"Ok ",ary1(nCount)
    else
       ?"Err ",ary1(nCount)
    endif
endfor

[此贴子已经被作者于2016-2-29 12:21编辑过]

搜索更多相关主题的帖子: local 
2016-02-29 11:34
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
参数
ArrayName
指定要在其中进行搜索的数组。
eExpression
指定要搜索的常规表达式。
nStartElement
指定开始搜索的元素号(含此元素)。如果忽略参数 nStartElement,则默认搜索整个数组。
nElementsSearched
指定要搜索的元素数目。如果忽略参数 nStartElement 和 nElementsSearched,将从第一个元素开始搜索,如果忽略参数 nSearchColumn,将搜索到最后一个元素。 注意:
有两种方式可以引用二维内存变量数组中的某个元素。第一种方法为引用确定元素在数组的第几行和第几列的两个下标值,另一种方法为使用元素编号。此函数和其他操作二维数组的函数需要元素的编号值 ( nStartElement 和 nElementsSearched )。使用 AELEMENT() 函数可将二维数组中元素的行列下标值转换成编号。
nSearchColumn
指定要搜索的列。这通常在由 AFIELDS() 这样的函数创建的数组中是有用的。可以用 0 或一个负数的 nSearchColumn 来影响整个数组的搜索。如果使用大于 0 的 nSearchColumn, ASCAN() 处理特定的列为一个一维数组, 用各行中的数据作为搜索元素。例如, 下面示例只搜索第二列的第三和第四个元素 (而不是整个数组)。
要不分大小写,
ASCAN(ArrayName, eExpression [, nStartElement [, nElementsSearched [, nSearchColumn [, nFlags ]]]])
在nFlags参数?但帮助文件,怎么nFlags的值表有2个的。

图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-2-29 11:58编辑过]

2016-02-29 11:35
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
ASCAN(ArrayName, eExpression [, nStartElement [, nElementsSearched [, nSearchColumn [, nFlags ]]]])
因为nFlags在最后1个,那我前面的参数,忽略的话,怎么写。。。
2016-02-29 11:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
忽略的寫空逗號

授人以渔,不授人以鱼。
2016-02-29 13:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
其實,所謂“忽略大小寫”,祗對字符串類型有用,而忽略大小寫的本質,不過是把字符串統一爲大寫或小寫,與其用它那晦澀難懂的參數,不如自己直接把要查找的數據upper()或lower()了——你以為ascan()裏面它就不是先幹這個動作?它那個參數,不過是指示ascan()內部是否進入upper()/lower()統一大小寫的if代碼支路,在外面自己做了,代碼清晰,根本不需要使用這個參數,用了,也要寫註釋這參數是具體是幹嘛的,何必秀這種別人不知道的東西呢。

一些功能過於強大的函數或指令,是可用可不用的,不如寫直接代碼,針對性地做動作,效率比進入龐大代碼羣做多餘的複雜判斷再做原本就該做的事要高。

[此贴子已经被作者于2016-2-29 15:16编辑过]


授人以渔,不授人以鱼。
2016-02-29 14:07
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:5 
对的
2016-02-29 15:01
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
public a1(2)
a1(1)="b"
a1(2)="a"
MyAscan(@a1)
FUNCTION MyAscan(ArrayName, eExpression, nFlags)
LOCAL nPara
nPara=PARAMETERS()
?TYPE("ArrayName")
?TYPE("ArrayName",1)
?ALEN(ArrayName)
ENDFUNC
如果我调用MyAscan()时,我MyAscan(a1),在ALEN()会提示,不是数组,但我用MyAscan(@a1),就正常,
问题,怎么系统提供的函数,如Ascan(),我们在调用时,怎么不需要家@?难道他里面有处理的?还是自己定义的函数,参数为数组时,要在前面加@??
2016-02-29 16:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:5 
以下是引用mywisdom88在2016-2-29 16:04:19的发言:
如果我调用MyAscan()时,我MyAscan(a1),在ALEN()会提示,不是数组,但我用MyAscan(@a1),就正常,

SET UDFPARMS TO REFERENCE
MyAscan(a1)
2016-02-29 16:25
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用mywisdom88在2016-2-29 16:04:19的发言:
问题,怎么系统提供的函数,如Ascan(),我们在调用时,怎么不需要家@?难道他里面有处理的?还是自己定义的函数,参数为数组时,要在前面加@??

@带有强制性,不受 SET UDFPARMS TO VALUE 影响。
2016-02-29 16:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
回复 7楼 mywisdom88
vfp的解釋器自己對ascan()中的第一個參數加了@,你可以試試ascan(@a1,...)是出錯的。

授人以渔,不授人以鱼。
2016-02-29 16:33
快速回复:问ASCAN函数问题?
数据加载中...
 
   



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

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