MasteringVFP/2/4/1

出自VFP Wiki

在2005年4月3日 (日) 08:11由Elleryq (對話 | 貢獻)所做的修訂版本
跳轉到: 導航, 搜尋

For-loop,會讓夾在 For 與 next 之間的程式重複執行 n 次. 舉例來說: For i=1 to 10

? "Hello world"

next 就會印出十次 "Hello world"

另外一個變化形的應用,比如這樣: For i=1 to 10 step 2

? "Hello world"

next 這樣就只會印出五次 "Hello world" 囉.

如果想在 For-loop 裡面作判斷,符合條件就跳出,那麼你可以適時的加上 if, continue 與 exit. 如下例: For i=1 to 10

if i=5
exit
else
? "Hello world"
continue
endif

next 當 i=5 的時候,就會跳出迴圈,如果小於 5 的話,則印出 "Hello world",並繼續這個迴圈.


目錄

FOR ... ENDFOR 命令

用途

按指定的次數重複執行一組命令。

語法

FOR Var = nInitialValue TO nFinalValue [STEP nIncrement]
Commands
[EXIT]
[LOOP]
ENDFOR | NEXT

參數

Var

  • 指定作為計數器的記憶體變數或陣列元素。在 FOR ... ENDFOR 執行之前,此記憶體變數或陣列元素不一定存在。

nInitialValue TO nFinalValue

  • nInitialValue 是計數器的初始值,而 nFinalValue 是計數器的終止值。

STEP nIncrement

  • nIncrement 是計數器遞增或遞減的數量。如果 nIncrement 為負,則計數器遞減;如果省略 STEP 子句,計數器每次的增量為 1。

Commands

  • 指定要執行的 Visual !FoxPro 命令,Commands 可以包含任意數目的命令。

EXIT

  • 在 FOR ... ENDFOR 循環中,將控制權迅速移轉給緊接在 ENDFOR 的下一個命令。您可以將 EXIT 可以放在 FOR 與 ENDFOR 之間的任何位置。

LOOP

  • 將控制權直接傳給 FOR 子句,不再執行 LOOP 與 ENDFOR 之間的敘述。計數器正常遞增或遞減,就像執行到 ENDFOR 一樣。LOOP 可以放在 FOR 與 ENDFOR 之間的任何位置。

附註

  • 可以用記憶體變數或陣列元素作為計數器,指定 FOR ... ENDFOR 循環中 Visual !FoxPro 命令的執行次數。
  • 在遇到 ENDFOR 或 NEXT 之前,始終執行 FOR 後面的 Visual !FoxPro 命令。執行過程中,每循環一次,計數器 Var 都會遞增,增量為 nIncrement(如果省略 STEP 子句,則計數器每次的增量為 1),然後把計數器的值與 nFinalValue 作比較。如果計數器的值小於或等於 nFinalValue,將再次執行 FOR 子句後的命令;如果計數器的值大於 nFinalValue,則退出 FOR ... ENDFOR 循環,程序繼續執行 ENDFOR 或 NEXT 之後的下一個命令。
    • 注意
nInitialValuenFinalValuenIncrement 只能是初次讀入的值。在循環過程中更改計數器 Var 的值將影響循環的執行次數。
  • 如果 nIncrement 為負,且初始值 nInitialValue 大於終止值 nFinalValue,則每經過一次循環,計數器都將遞減。

範例

在範例 1 中,顯示數字 1 到 10。

範例 2 使用記憶體變數作為初始值、終止值和 STEP 值,顯示 customer 資料表格中從 2 號到 10 號記錄中所有記錄號為偶數的記錄。

範例 1 CLEAR FOR gnCount = 1 TO 10  ? gnCount ENDFOR

範例 2 SET TALK OFF CLOSE DATABASES OPEN DATABASE (HOME(2) + 'Data\testdata') USE customer    && 開啟 Customer 資料表格 STORE 2 TO gnI   && 初始值 STORE 10 TO gnJ  && 終止值 STORE 2 TO K    && Step 值 FOR gnCount = gnI TO gnJ STEP K  GOTO gnCount   && 移動記錄指標  DISPLAY company && 顯示公司名稱 ENDFOR