TEXT [TO <VariableName> [ADDITIVE] [TEXTMERGE] [NOSHOW] [FLAGS nValue] [PRETEXT eExpression]]
TextLines
ENDTEXT
TextLines | 指定要发送到当前输出设备的文本。TextLines 可以由文本、内存变量、数组元素、表达式、函数或它们的任意组合组成。 |
注意 |
只有将 SET TEXTMERGE 设为 ON 并用 SET TEXTMERGE DELIMITERS 指定的分隔符括起来时,X# 才会计算用 TextLines 指定的表达式、函数、内存变量和数组元素。如果 SET TEXTMERGE 为 OFF,Visual FoxPro 将以字符串字面形式输出表达式、函数、内存变量和数组元素及其分隔符。 |
例如,当您指定 DATE( ) 函数为 TextLines 时,只有当 SET TEXTMERGE 为 ON 时,X# 才会求值并输出当前日期,并且 TextLines 包含函数和适当的定界符,如 <<DATE()>>。如果 SET TEXTMERGE 为 OFF,X# 输出 <<DATE( )>> 将以字符串字面形式输出。 |
如果将注释放在 TEXT...ENDTEXT 中或单反斜线字符 (\) 或双反斜线字符 (\\) 之后,X# 将输出注释。 |
TO <VariableName> | 指定用于传递 TEXT...ENDTEXT 内容的内存变量名。该变量可以已经存在。 |
如果变量尚未声明,X# 会自动将其创建为私有变量。TO 子句的作用与 SET TEXTMERGE 的设置无关。如果 SET TEXTMERGE 被设置为文件,并且包含 TO 语句,Visual FoxPro 将同时输出文件和变量。 |
ADDITIVE | 决定 TO 变量的内容是被覆盖还是添加到现有内容中。 |
如果 TO VarName 中的内容不是字符串,X# 将始终覆盖 VarName 中的内容。 |
TEXTMERGE | 无需将 SET TEXTMERGE 设置为 ON,即可评估分隔符包围的内容。 |
NOSHOW | 禁止在屏幕上显示合并文本。 |
FLAGS nValue | 指定一个数值,用于决定是否抑制输出到输出文件,或是否在输出中包含任何文本前的空行。 |
|
PRETEXT eExpression | 指定在 TEXT...ENDTEXT 或数字表达式之间的每行文本合并内容之前插入的字符串。 |
下表根据 eExpression 指定的表达式描述了 PRETEXT 子句的行为。 |
eExpression | PRETEXT 行为 |
Character expression | 在 TEXT...ENDTEXT 语句之间出现的文本合并内容的每一行之前插入表达式。与 TEXT...ENDTEXT 一起使用 PRETEXT 时,eExpression 的最大长度限制为 255 个字符。 |
eExpression 会覆盖 _PRETEXT 系统变量的内容。当 eExpression 包含一个需要求值的表达式(例如用户定义函数 (UDF))时,Visual FoxPro 只在 TEXT 命令首次出现时求值一次。 |
Numeric expression | 指定加法标志值,以确定在 TEXT...ENDTEXT 语句之间出现的文本合并内容的行为。 |
例如,值为 7 时,Visual FoxPro 将消除所有空白,包括空格、制表符和回车。超出 0-15 范围的值将产生错误。 |
注意 |
指定值为 0 不会消除空白。 |
当 eExpression 是数字表达式时,可以使用 _PRETEXT 系统变量在 Visual FoxPro 消除空白后插入附加文本。 |
下表列出了可以在 eExpression 中使用的数字加法标志,用于指定附加行为。 |
|
注意事项 |
与 _PRETEXT 系统变量不同,PRETEXT 子句不具有全局范围,仅适用于出现该子句的 TEXT...ENDTEXT 语句。 |
使用 PRETEXT 子句删除的字符仅适用于 TEXT...ENDTEXT 语句中的文本,而不适用于从 cExpression 合并的已评估文本。在下面的示例中,内存变量 myvar 中的空格与 TEXT...ENDTEXT 中的文本合并时不会被删除: |
myvar = " AAA"
TEXT TO x NOSHOW ADDITIVE TEXTMERGE PRETEXT 7
Start Line
<<myvar>>
BBB
CCC
ENDTEXT
默认情况下,TEXT ... ENDTEXT 会将输出发送到终端窗口。要禁止向终端窗口输出,请执行 SET CONSOLE OFF。要将输出发送到打印机或文本文件,请使用 SET PRINTER。要将 TEXT ... ENDTEXT 的输出发送到使用 FCREATE( ) 或 FOPEN( ) 创建或打开的底层文件,请将 FCREATE( ) 或 FOPEN( ) 返回的文件句柄存储到 _TEXT 系统变量中,然后使用该变量将输出导向相应的底层文件。
文本合并过程通常包括 TEXT...ENDTEXT 语句中每行前可能出现的空白。但是,包含空白可能会导致文本合并失败,例如在 Web 浏览器中使用 XML 时。您必须删除这些空白,以避免 XML 格式错误。
不建议嵌套 TEXT...ENDTEXT 语句,尤其是在使用 PRETEXT 子句时,因为嵌套语句会影响外层语句的格式。
下面的示例演示了创建名为 myNamesFile.txt 的底层文件,并将其文件句柄存储在 _TEXT 系统变量中。如果无法创建 myNamesFile.txt 文件,程序将退出。
代码打开客户表,并将前十位联系人的姓名输出到 CotactList.txt。
代码将文本和函数结果输出到文本文件。
CLEAR
CLOSE DATABASES
SET TEXTMERGE ON
SET TEXTMERGE TO ContactList.TXT
USE customer
TEXT
CONTACT NAMES
<<DATE( )>> <<TIME( )>>
ENDTEXT
WAIT "按任意键生成前十个名称。"
SCAN NEXT 10
TEXT
<<contact>>
ENDTEXT
ENDSCAN
CLOSE ALL
下面的示例显示了一个自定义过程,该过程使用 TEXT...ENDTEXT 将 XML 数据集存储到变量中。在示例中,所有空格、制表符和回车符都被删除。
PROCEDURE myProcedure
DO CASE
CASE nValue = 1
TEXT TO myVar NOSHOW TEXT PRETEXT 7 && 1 + 2 + 4
<?xml version="1.0" encoding="utf-8"?>
<DataSet xmlns="http://tempuri.org">
<<ALLTRIM(STRCONV(leRetVal.item(0).xml,9))>>
</DataSet>
ENDTEXT
OTHERWISE
ENDCASE
ENDPROC
FOPEN( ) 函数
_PRETEXT 系统变量
SET TEXTMERGE 命令
SET TEXTMERGE DELIMITERS 命令
_TEXT 系统变量