M L INE() 函 数

M L INE() 函 数 - 图1以字符串形式返回备注字段中的指定行

语 法

MLINE ( MemoFieldNam e, nLineNumber [, nNumberOfCharacters ])

返 值 类 型

字符型

参 数 描 述

MemoFieldName

M L INE() 函 数 - 图2M L INE() 函 数 - 图3M L INE() 函 数 - 图4M L INE() 函 数 - 图5指 定 的 备 注 字 段 名 MLINE ( ) 从 该 字 段 中 返 回 一 行 若 备 注 字 段 是 在 非 当 前工 作 区 打 开 的 表 中 则 应 在 备 注 字 段 名 前 加 上 表 别 名 和 一 个 句 点

nLineNumber

M L INE() 函 数 - 图6M L INE() 函 数 - 图7M L INE() 函 数 - 图8指 定 从 备 注 字 段 中 返 回 行 的 行 号 当 nLineNumber 为 负 数 或 者 大 于 备 注 字 段的 行 数 时 则 返 回 空 字 符 串

nNumberOfCharacters

M L INE() 函 数 - 图9M L INE() 函 数 - 图10指 定 从 备 注 字 段 开 始 的 字 符 数 从 这 些 字 符 之 后 MLIN E ( ) 返 回 指 定 行 的 内容

M L INE() 函 数 - 图11M L INE() 函 数 - 图12_MLINE 系统变量通常可用作 nNumberOfCharacters 每次调用 MLINE ( ) 后 _MLINE

M L INE() 函 数 - 图13将自动调整

M L INE() 函 数 - 图14M L INE() 函 数 - 图15在从较大备注字段中返回行的递归过程中 把 _MLINE 作为 nNumberOfCharacters 将会取得较好效果

说 明

M L INE() 函 数 - 图16MLIN E( ) 将裁剪掉 nLineNumber 指定行的后续空格

M L INE() 函 数 - 图17M L INE() 函 数 - 图18M L INE() 函 数 - 图19M L INE() 函 数 - 图20M L INE() 函 数 - 图21M L INE() 函 数 - 图22备注字段的行长度和行数由 SET MEMOWIDTH 的当前值决定 一行的默认长度为 50 个字符 遇到回车符时 不再返回更多字符 _WRAP 的当前设置决定备注字段行的显示方式

M L INE() 函 数 - 图23M L INE() 函 数 - 图24M L INE() 函 数 - 图25在备注字段中查找字符串时 可以使用 ATLIN E( ) 或 ATCLINE( ) 返回找到的字符串所在行的行号 然后在 MLINE( ) 中使用这个行号返回备注字段中此行的内容

示 例

M L INE() 函 数 - 图26M L INE() 函 数 - 图27M L INE() 函 数 - 图28M L INE() 函 数 - 图29M L INE() 函 数 - 图30下面的示例中 使用两种方法从备注字段中返回行内容 使用 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