M L INE() 函 数
以字符串形式返回备注字段中的指定行
语 法
MLINE ( MemoFieldNam e, nLineNumber [, nNumberOfCharacters ])
返 值 类 型
字符型
参 数 描 述
MemoFieldName
指 定 的 备 注 字 段 名 MLINE ( ) 从 该 字 段 中 返 回 一 行 若 备 注 字 段 是 在 非 当 前工 作 区 打 开 的 表 中 则 应 在 备 注 字 段 名 前 加 上 表 别 名 和 一 个 句 点
nLineNumber
指 定 从 备 注 字 段 中 返 回 行 的 行 号 当 nLineNumber 为 负 数 或 者 大 于 备 注 字 段的 行 数 时 则 返 回 空 字 符 串
nNumberOfCharacters
指 定 从 备 注 字 段 开 始 的 字 符 数 从 这 些 字 符 之 后 MLIN E ( ) 返 回 指 定 行 的 内容
_MLINE 系统变量通常可用作 nNumberOfCharacters 每次调用 MLINE ( ) 后 _MLINE
将自动调整
在从较大备注字段中返回行的递归过程中 把 _MLINE 作为 nNumberOfCharacters 将会取得较好效果
说 明
MLIN E( ) 将裁剪掉 nLineNumber 指定行的后续空格
备注字段的行长度和行数由 SET MEMOWIDTH 的当前值决定 一行的默认长度为 50 个字符 遇到回车符时 不再返回更多字符 _WRAP 的当前设置决定备注字段行的显示方式
在备注字段中查找字符串时 可以使用 ATLIN E( ) 或 ATCLINE( ) 返回找到的字符串所在行的行号 然后在 MLINE( ) 中使用这个行号返回备注字段中此行的内容
示 例
下面的示例中 使用两种方法从备注字段中返回行内容 使用 MLIN E( ) 在两个循环中返回备注字段的行 注意在第二个循环中使用系统变量 - MLINE 作为 - MLINE( ) 的参数 从而增强了性能
CLEAR
SET TALK OFF
SET MEMOWIDTH TO 50 CLOSE DATABASES
CREATE TABLE tmemo (name c(10), notes m) APPEND BLANK && 添加一个记录
WAIT WINDOW 'Filling memo field - takes several seconds' NOWAIT
*** 填 充备注字段 ***
FOR gnOuterLoop = 1 TO 5 && 循环 5 次
FOR gnAlphabet = 65 TO 75 && 从字符 A 到 H
REPLACE notes WITH REPLICATE(CHR(gnAlphabet), 10) ;
+ CHR(13) ADDITIVE
NEXT NEXT
*** 显示备注字段的所有行 ***
STORE MEMLINES(notes) TO gnNumLines && 备注字段的行数
STORE SECONDS( ) TO gnBegin && 开始时间
FOR gnCount = 1 TO gnNumLines && 执行备注字段行数次循环 Z
? MLINE(notes, gnCount) && 显示每一行
NEXT
? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds' && 总时间
*** 更好的方法是在 -MLINE( ) 中使用 -MLINE***
*** 显示备注字段的所有行 ***
WAIT 'Press a key to see the preferred method' WINDOW CLEAR
STORE 0 TO _MLINE && 设 置 MLINE 为 0
STORE SECONDS( ) TO gnBegin && 开始时间
FOR count = 1 TO gnNumLines && 执行备注字段行数次循环
? MLINE(notes, 1, _MLINE) && 显示每一行
NEXT
? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds' && 总时间
SET TALK ON CLOSE DATABASES
ERASE tmemo.dbf ERASE tmemo.fpt
请 参 阅
ALINES ( ), ATCLINE( ), ATLINE( ), COPY MEMO, MEMLINES( ), _ MLINE, M O D I F Y M E M O , SET MEMOWIDTH, _WRAP