foxpro的函数ALINES()

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

 

在VFP中如果要分割字符串,就要用到ALINES函数,下面先将该函数的具体用法帖一下,然后举例说明其用法和注意事项。

ALINES( ) 函数

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

ALINES(ArrayName, cExpression [, lTrim] [cParseChar, ,?,cParseChar])

返回值

数值型

参数

ArrayName

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

cExpression

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

lTrim

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

cParseChar

指定一个或多个由 ALINES() 返回的 cExpression 中的分隔元素的字符。cParseChars 的最大值是 23。各 cParseChars 串的最大长度是 11 字符。

备注

ALINES()返回数组的行数(或者,同样地返回字符表达式或备注字段的行数) 。字符表达式或备注字段的第一行复制到数组的第一行,字符表达式或备注字段的第二行复制到数组的第二行, 依次类推。

所有字符表达式是大小写敏感的。

一个换行符 (CHR(10)) 或回车符 (CHR(13)) 表明了一行的结束。也可以使用这些字符的组合 (CHR(10) + CHR(13)或CHR(13) + CHR(10)) 表明一行的结束。

ALINES()提供了分析字符表达式或备注字段中各行的简单方法。虽然 MLINES() 也用来分析字符表达式或备注字段,但是 ALINES()更快,并且需要更少的编程。另外,ALINES() 不受 SET MEMOWIDTH 的值的影响。

为了将字符表达式或备注字段中的行复制到数组, 必须有足够的内存。如果内存不足,Visual FoxPro 会生成一条错误信息。

如果你想执行一个大小写敏感的分解, 可以按以下示例中的一个来做。

? ALINES(aMyArray,UPPER(employee.notes), “R.”)

? ALINES(aMyArray,employee.notes, “R.”, “r.”)

示例

下面的程序在数据库 testdata 中打开表 employee。 alines() 用于复制notes备注型字段中的行到名为 amyarray 的数组中, 然后显示数组的内容。

本示例中,alines() 返回 1,因为在备注字段中输入雇员信息时,句子后没有按 enter 键。

CLOSE DATABASES

CLEAR

SET TALK OFF

OPEN DATABASE (HOME(2) + ‘data\testdata’)

USE employee && 打开 Employee table

? ALINES(aMyarray,employee.notes,CHR(13)) && 显示1

? ALINES(aMyarray,employee.notes,”.”) && 显示7

? ALINES(aMyarray,employee.notes,”,”) && 显示4

? ALINES(aMyarray,employee.notes,” “) && 显示75

? ALINES(aMyarray,employee.notes,”.”, “,”) && 显示10

? ALINES(aMyArray, employee.notes) && 显示1

? aMyArray(1)

以上就是该函数的用法。

比如s=”xx,yy,zz”,现在我们以 , 来分割s这个字符串,并将结果保存到数组aa:

ALINES(aa,s,1,”,”)

注意数组aa的取值下标是从1开始的,这里,aa(1)=”xx”,aa(2)=”yy”,aa(3)=”zz”

ALINES( ) 函数
VFP9: ALINES(ArrayName, cExpression [, nFlags] [, cParseChar [, cParseChar2 [, …]]])
VFP6: ALINES(ArrayName,cExpression [,lTrim])
说明: 事实上,VFP9中同样兼容VFP6中该函数的语法。在VFP9中,该函数生成的数组(元素)中,可以不包含空行,可以包含分隔字符;更为重要的是,可以指定一个或多个分隔字符(或字符串),不再固定为chr(10)和chr(13)。
建议: 该函数十分有用,应掌握。
应用举例:
*—————————————————————–
* TAlines.prg
* [功能] 将从Excel表格中复制的单元格打印出来
*—————————————————————–
LOCAL ARRAY aExcelLine[1], aCells[1]
LOCAL i, j
IF LEN(_CLIPTEXT) > 0 AND ALINES(aExcelLine, _CLIPTEXT) > 0
FOR i = 1 TO ALEN(aExcelLine)
IF ALINES(aCells, aExcelLine, CHR(9)) > 0
FOR j = 1 TO ALEN(aCells)
?? aCells[j] + CHR(9)
ENDFOR
?
ELSE
? aExcelLine
ENDIF
ENDFOR
ELSE
MESSAGEBOX(‘请从Excel中复制有数据的单元格后再运行本程序!’, 16, ‘提示’)
ENDIF

例子:

IpAddress=’10.43.33.11′
ALines(aTemp, StrTran(IpAddress, ‘.’, chr(13)))

IP 地址的4个组成部分已在 aTemp 数组中

7版开始ALINE可指定分隔符,6版只能用回车换行,所以6版可以先替换掉分割符,再用ALINES()—-2句而已

 » 转载请注明来源:网络蛀虫小窝 » 《foxpro的函数ALINES()》
 » 本站地址:http://www.gomoth.com

标签: