| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3748 人关注过本帖, 1 人收藏
标题:VF里有没有可以把有分隔符的字符串放入数组的函数
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
这样用也不错,VFP9.0代码
程序代码:
CLEAR
AA="1,1,2,3,4,5,6,7"
LOCAL ARR(GETWORDCOUNT(AA,","))
ARR=""
FOR I=1 TO GETWORDCOUNT(AA,",")
    ARR(I)=GetWordNum(AA,I,",")
    ?ARR(I)
ENDFOR

 

坚守VFP最后的阵地
2012-05-24 23:17
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
对于这个问题,实际最合适的还是ALINES()。因此平时多看些VFP中的函数、命令还是大有益处的。

坚守VFP最后的阵地
2012-05-24 23:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 11楼 sdta
你这个跟我是一样的,只是没有封装成函数而已。

授人以渔,不授人以鱼。
2012-05-24 23:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
ALINES()函数也有前后版本不兼容的语法问题,帮助信息里有写。而且这个函数的参数有点复杂,不是很熟悉位操作叠加标志功能的人,不容易操纵这个函数。

授人以渔,不授人以鱼。
2012-05-24 23:23
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
实际上把这些代码稍加变化就是函数,关键是看如何用这些代码。我认为代码有时候不能太精练了,要以便于平时的维护为原则,太精练了,时间一长,连自己都不知道是怎么回事了。

[ 本帖最后由 sdta 于 2012-5-24 23:32 编辑 ]

坚守VFP最后的阵地
2012-05-24 23:25
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 14楼 TonyDeng
楼主的这个问题,如果用VFP6.0中的ALINES()函数处理,你如何处理。
ALINES( ) 函数
示例 请参阅

将一个字符表达式的或备注字段中的每一行复制到一个数组相应行。

语法

ALINES(ArrayName,cExpression [,lTrim])

 返值类型

数值型

参数描述

ArrayName 指定数组的名称,将字符表达式或备注字段中的每一行复制到该一个数组中。如果所指定的数组不存在,Visual FoxPro 会自动创建该数组。如果该数组存在, 但是大小不足以容纳备注字段中的每一行,则 Visual FoxPro 自动增加该数组的大小。如果该数组比所需的要大,则 Visual FoxPro 会截短该数组。

 cExpression

指定字符表达式或备注字段,其中包含要复制到数组中的行。如果cExpression 是空字符串或 null 值,会创建一个具有单行的数组,并且该行包含空字符串。

lTrim

指定是否从复制到数组的行中删除前导和后缀空格。如果 lTrim 为“真”(.T.),则从行中删除前导和后缀空格。如果 lTrim 为“假” (.F.) 或省略,则不删除前导和后缀空格。

 说明

ALINES()返回数组的行数(或者,同样地返回字符表达式或备注字段的行数) 。字符表达式或备注字段的第一行复制到数组的第一行,字符表达式或备注字段的第二行复制到数组的第二行, 依次类推。一个换行符 (CHR(10)) 或回车符 (CHR(13)) 表明了一行的结束。也可以使用这些字符的组合 (CHR(10) + CHR(13)或CHR(13) + CHR(10)) 表明一行的结束。ALINES()提供了分析字符表达式或备注字段中各行的简单方法。虽然 MLINES() 也用来分析字符表达式或备注字段,但是 ALINES()更快,并且需要更少的编程。另外,ALINES() 不受 SET MEMOWIDTH 的值的影响。为了将字符表达式或备注字段中的行复制到数组, 必须有足够的内存。如果内存不足,Visual FoxPro 会生成一条错误信息。

坚守VFP最后的阵地
2012-05-24 23:30
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我解释过不使用这个函数的原因了,它不能令我满意。当然VFP9新版本的函数好用,但我觉得不适合楼主用,谁知道他用什么版本的VFP运行,保险一些。那个写法容易理解,再说看不明白,完全可以把GETWORD两个函数拆了不用,用原始的代码写也行,差别不大的。其实,ALINES()应该是某种Win32API函数的直接调用,看它有位操作和跟旧版本有差异,猜想大致应该是这样,它宣称效率高也是这个原因,但毕竟有点复杂,对楼主这个相对简单的需求来说,使用这么复杂的函数有点为难他了。

[ 本帖最后由 TonyDeng 于 2012-5-24 23:39 编辑 ]

授人以渔,不授人以鱼。
2012-05-24 23:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这种功能的函数,肯定多处地方用到,分隔符也会千变万化,不封装它,同类代码到处都是,只能搞死自己。不管函数的使用次数有多么少,只要逻辑上应该封装起来,就毫不犹豫地封装,将来只检查和修改一个部位就可以了。自己写的函数,想什么时候重温代码都行,不存在忘记的问题。封装成函数,放在一个专用的过程文件中SET PROCEDURE TO之后,在代码中根本看不到这个函数的代码,我上面写了那么多行,其实调用处就只有两行,一行声明数组变量,一行就调用函数得到数组结果了。

既然楼主的标题是问有没有这么一个函数,那么我就写一个函数,没有的就有了,哪会没有之理。当然,现在很多人写程序从来不考虑自己做函数的,都想要现成的,所以才会问有没有这个那个,最好一翻书指着某个函数说“有”就成。

[ 本帖最后由 TonyDeng 于 2012-5-24 23:51 编辑 ]

授人以渔,不授人以鱼。
2012-05-24 23:42
快速回复:VF里有没有可以把有分隔符的字符串放入数组的函数
数据加载中...
 
   



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

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