MasteringVFP/2/3/3
出自VFP Wiki
(修訂版本間差異)
小 (revert) |
|||
第155行: | 第155行: | ||
=MESSAGEBOX(messageinfo,64,"提示") | =MESSAGEBOX(messageinfo,64,"提示") | ||
</pre> | </pre> | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- |
在2005年4月7日 (四) 07:05所做的修訂版本
目錄 |
TEXT ... ENDTEXT 命令
用途
- 6.0 版:
- 輸出文字列、運算式和函數的結果及記憶體變數的內容。
- 8.0 版:
- 將指定的 TextLines 文字列傳送到目前輸出裝置。Visual !FoxPro 傳送文字列到目前輸出裝置,此動作會持續進行,直到碰到 ENDTEXT 敘述或到程式檔之盡頭為止。
- 此目前輸出裝置可包括 Visual FoxPro 的主視窗、一個使用者定義的視窗、一臺印表機、一個文字檔或一個低階檔案。
語法
- 6.0 版:
- TEXT
- TextLines
- ENDTEXT
- 7.0 版:
- TEXT [TO VarName [ADDITIVE] [TEXTMERGE] [NOSHOW]]
- !TextLines
- ENDTEXT
- 8.0 版:
- TEXT [TO VarName [ADDITIVE] [TEXTMERGE] [NOSHOW] [PRETEXT eExpression]]
- TextLines
- ENDTEXT
參數
!TextLines
- 指定送到目前輸出裝置上的文字。TextLines 可以是文字、記憶體變數、陣列元素、運算式、函數或者它們的任何組合。
- 注意
- 只有在 SET TEXTMERGE 設定為 ON,並且運算式、函數、記憶體變數和陣列元素中包含 SET TEXTMERGE DELIMITERS 指定的分隔符號時,才計算 !TextLines 所指定的值;若 SET TEXTMERGE 設定為 OFF,則輸出運算式、函數、記憶體變數和陣列元素,以及它們之間分隔符號的原義字串。
- 例如:如果 SET TEXTMERGE 為 ON,並且文字列中包含 <<DATE( )>>,則輸出當天的日期;如果 SET TEXTMERGE 為 OFF,則 <<DATE( )>> 原樣輸出。
- 如果在 TEXT 和 ENDTEXT 中或在「\」、「\\」之後放置註釋,則該註釋也一起輸出。
TO !VarName
- 指定用於傳遞 TEXT...ENDTEXT 控制項敘述內容的記憶體變數名稱。該變數可以已經存在。
- 如果該變數尚未定義,Visual !FoxPro 將自動建立為私有變數。TO 子句操作是不管 SET TEXTMERGE 的設定。如果 SET TEXTMERGE 設定到一個檔案而且包括了 TO 敘述,則 Visual !FoxPro 同時輸出到檔案和變數。
ADDITIVE
- 決定 TO 所指定的變數內容是否覆蓋或附加到已存在的內容。
- 注意
- 如果 TO VarName 不是一個字串,Visual FoxPro 總是覆蓋在 VarName 中的內容。
TEXTMERGE
- TEXTMERGE 關鍵字允許計算分隔符號中包含的內容而不需要 SET TEXTMERGE ON。
NOSHOW
- 禁止螢幕顯示合併文字。
PRETEXT eExpression
- 指定在 TEXT...ENDTEXT 之間或一個數值運算式的每一文字列合併內容之前插入的字串。
- 下表描述 PRETEXT 子句依據 eExpression 所指定的運算式之行為:
eExpression | PRETEXT 行為 |
---|---|
字元運算式 | 出現在 TEXT...ENDTEXT 敘述之間的每一文字列合併內容之前插入運算式。當在 TEXT...ENDTEXT 中使用 PRETEXT 時,eExpression 被限制在 255 個字元的最大長度。eExpression 覆蓋 _PRETEXT 系統變數的內容。當 eExpression 包含一個需要計算的運算式 (例如:一個使用者定義的函數) 時,Visual !FoxPro 僅在 TEXT 命令首次出現時評估一次。 |
數值運算式 | 指定追加的旗標值來決定出現在 TEXT...ENDTEXT 敘述之間文字合併內容的行為。舉例來說,7 (由 1 + 2 + 4 累加的) 這個值指定 Visual FoxPro 去除包括空格、TAB 鍵和換行符號 (CHR(13)) 的所有白色空格。落在 0-7 範圍之外的值會產生一個錯誤。注意:指定 0 這個值是不會去除白色空格的。當 eExpression 是一個數值運算式時,您可以使用 _PRETEXT 系統變數插入附加文字到 Visual !FoxPro 所去除的白色空格之後。 |
- 下表列出您可使用在 eExpression 中的數值型態的附加旗標來指定其他的行為:
值(附加的) | 描述 |
---|---|
1 | 在每行之前除去空格。 |
2 | 在每行之前除去 TAB 鍵。 |
4 | 除去換行符號 (CHR(13))。例如:在每行之前的空白行。 |
- 注意
- 不像 _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 的輸出送到 Visual FoxPro 的主視窗或作用視窗。使用 SET CONSOLE OFF 命令可禁止輸出到 Visual FoxPro 主視窗或作用視窗。使用 SET PRINTER 命令可以輸出到印表機或文字檔案。
- TEXT ... ENDTEXT 的輸出也可以送到由 FCREATE( ) 或 FOPEN( ) 函數建立或開啟的低階檔案中。如果把 FCREATE( ) 或 FOPEN( ) 函數傳回的檔案控制碼儲存到 _TEXT 系統記憶體變數中,那麼將直接輸出到相對應的低階檔案中。
- 注意
- 合併文字通常處理包括任何在一個 TEXT...ENDTEXT 敘述中的每行之前出現的白色空格。然而,與白色空格共用可能導致合併文字失敗,舉例來說,當 XML 被使用於網頁瀏覽器中時,您必須移除白色空格以避免不正確地格式化的 XML。
範例
範例 1 下面的範例演示了建立一個名為 myNamesFile.txt 低階檔案,將其檔案控制碼存入 _TEXT 系統記憶體變數中。如果不能建立 myNamesFile.txt 檔案,程式將退出。 Visual FoxPro 開啟 customer 資料表格,把最前面的 10 個連絡人輸出到 myNamesFile.txt 檔案中,Visual FoxPro 輸出文字和函數的結果到文字檔案中。此範例使用 MODIFY FILE 命令來開啟 myNamesFile.txt。
CLEAR CLOSE DATABASES SET TALK OFF SET TEXTMERGE ON && 啟用運算式和函數嵌入 STORE FCREATE('myNamesFile.txt') TO _TEXT && 建立低階檔案 IF _TEXT = -1 && 不能建立低階檔案則退出程式 WAIT WINDOW '不能建立輸出檔案,按一鍵退出。' CANCEL ENDIF CLOSE DATABASES OPEN DATABASE (HOME(2) + 'Data\testdata') USE customer && 開啟 Customer 表 TEXT CONTACT NAMES <<DATE( )>> <<TIME( )>> ENDTEXT WAIT WINDOW '按一鍵來產生前十個名字。' SCAN NEXT 10 TEXT <<contact>> ENDTEXT ENDSCAN CLOSE ALL MODIFY FILE myNamesFile.txt ERASE myNamesFile.txt
範例 2 下面的範例顯示一個使用 TEXT...ENDTEXT 去儲存一個 XML 資料集到一個變數的自定程序。在範例中,所有的空格、TAB 鍵和換行符號會被去除掉。
PROCEDURE myProcedure DO CASE CASE nValue = 1 TEXT TO myVar NOSHOW TEXT PRETEXT 7 <?xml version="1.0" encoding="utf-8"?> <!DataSet xmlns="http://tempuri.org"> <<ALLTRIM(STRCONV(leRetVal.item(0).xml,9))>> </!DataSet> ENDTEXT OTHERWISE ENDCASE ENDPROC
範例 3 下面的範例顯示一個使用 TEXT...ENDTEXT 去儲存一段要顯示在 MESSAGEBOX 中的訊息到一個變數的程式碼。本範例不是 VFP 本身提供的,而是來自「梅子論壇」、狐友:huangdehua 所提供的 。
* 以下是引用 jiangbin 在 2004-8-7 11:27:10 的發言:(梅子論壇) * 以前,總是用CHR(13)之類來控制換列,很不好用,現在知道了......... * 原來 MESSAGEBOX 可以這樣用: TEXT TO messageinfo NOSHOW 請檢查以下項目: 1、網絡連接的基本參數設計是否正確(通知管理員檢查) 2、資料服務器是否開機。 3、你的計算機和資料庫服務器的網絡連接是否正常。 4、其它原因 請查明原因或重新選擇本地資料使用本程式。 ENDTEXT =MESSAGEBOX(messageinfo,64,"提示")