Online Multi-Matchmaking community where you get paid to build relationships.
Reach your customers at any time & place Market on a one-to-one basis.
Free php, mysql & perl web hosting. 29 Free PHP scripts with 1-click installations.
各清單內的處理
因為 帳、檔、郵、註 四個清單的設計方向都一樣,所以把它擺在一起看,會更容易了解~
|
帳號清單 |
檔案清單 | 備註清單 | 郵件清單 | |
| 參數?=1、2、3… ,指將清單之所有資料,以每?列下去分割,分割處會產生一個分隔符 | AccountBreak(?) | FileBreak(?) | NoteBreak(?) | MailBreak(?) |
| 取出清單內的第一列資料,若清單裏已沒半筆資料,則前往標記處 |
GetACcount() IFNo:標記 |
GetFile() IFNo:前往標記 |
GetNote() IFNo:前往標記 |
GetMail() IFNo:前往標記 |
| 判斷目前清單裏的第一列是否為分隔符 ,若成立,將程序移往標記處 | AccountBreakLoop:標記 | FileBreakLoop:標記 | NoteBreakLoop:標記 | MailBreakLoop:標記 |
| 判斷清單內是否仍有資料,若還有則往標記(未指定標記則程序將移至第一行從頭開始) | AccountLoop:標記 | FileLoop:標記名稱 | NoteLoop:標記名稱 | MailLoop:標記名稱 |
| ※ 經Getxxxx( )宣告後,可運用之屬性變數 |
***LoginID*** (指帳號)、***LoginPW*** (指密碼) ***AccountData***(帳號:密碼;專用於回傳已編碼之 帳:密 值) |
***File*** (指完整路徑含檔名)、***FileName*** (單指檔名的部份) | ***Note*** (指自備註清單取出的那列資料) | ***Mail*** (指自郵件清單中取出的那列資料) ***MailUrl*** (指將***Mail*** 再過濾為 name@mail_url的格式) |
| 各清單的"分隔符"表示 | #BreakAccount | #BreakFile | #BreakNote | #BreakMail |
| 判斷清單內是否有無資料,並依結果將程序移往標記處 | IfAccount:標記 IfNotAccount:標記 |
IfFile:標記 IfNotFile:標記 |
IfNote:標記 IfNotNote:標記 |
IfMail:標記 IfNotMail:標記 |
| 將符合或不符合過濾條件的資料自清單中刪除 |
ClearAccount:過濾字串 ClearNotAccount:過濾字串 |
ClearFile:過濾字串 ClearNotFile:過濾字串 |
ClearNote:過濾字串 ClearNotOut:過濾字串 |
ClearMail:過濾字串 ClearNotMail:過濾字串 |
| 即時動態加入一筆資料於清單內 ( <Crlf> 為換行字符 ) | AddAccount:字串(可代變數),?
?為選擇性參數;預設從最後一行加起。若?=0 ,則從第一行加起 |
AddFile:字串(可代變數).? ?為選擇性參數;預設從最後一行加起。若?=0 ,則從第一行加起 |
AddNote:字串(可代變數),? ?為選擇性參數;預設從最後一行加起。若?=0 ,則從第一行加起 |
AddMail:字串(可代變數).? ?為選擇性參數;預設從最後一行加起。若?=0 ,則從第一行加起 |
輸出清單與暫存清單內的處理
| 輸出清單 | 暫存清單 | |
| 將符合或不符合過濾條件的資料自清單中刪除 | ClearOut:過濾字串 ClearNotOut:過濾字串 |
ClearTemp:過濾字串 ClearNotTemp:過濾字串 |
| 將清單內的資料作重覆整理 | OutDataRefresh() | |
| 即時動態加入一筆資料於清單內 ( <Crlf> 為換行字符 ) | AddOut:字串(可代變數),? ?為選擇性參數;預設從最後一行加起。若?=0 ,則從第一行加起 |
|
| 將清單中的第一筆資料移出並存入變數"***Out***"中,以供程式提用 | GetOut() | |
| 判斷清單內是否仍有資料,若還有則往標記(未指定標記則程序將移至第一行從頭開始) | OutLoop:標記 |
各清單間的處理
| MoveOneFileToTemp() | 將【檔案清單】中的第一筆資料移動至【暫存清單】 |
| MoveOneTempToFile() | 將【暫存清單】中的第一筆資料移動至【檔案清單】 |
| CopyAccountToTemp:過濾字串 | 將符合條件的【帳號清單資料】 拷貝至 【暫存清單】 |
| CopyTempToAccount:過濾字串 | 將符合條件的【暫存清單資料】 拷貝至 【帳號清單】 |
| CopyFileToTemp:過濾字串 | 將符合條件的【檔案清單資料】 拷貝至 【暫存清單】 |
| CopyTempToFile:過濾字串 | 將符合條件的【暫存清單資料】 拷貝至 【檔案清單】 |
| CopyNoteToTemp:過濾字串 | 將符合條件的【備註清單資料】 拷貝至 【暫存清單】 |
| CopyTempToNote:過濾字串 | 將符合條件的【暫存清單資料】 拷貝至 【備註清單】 |
| CopyMailToTemp:過濾字串 | 將符合條件的【郵件清單資料】 拷貝至 【暫存清單】 |
| CopyTempToMail:過濾字串 | 將符合條件的【暫存清單資料】 拷貝至 【郵件清單】 |
| CopyOutToTemp:過濾字串 | 將符合條件的【輸出清單資料】 拷貝至 【暫存清單】 |
| CopyOutToNote:過濾字串 | 將符合條件的【輸出單資料】 拷貝至 【備註清單】 |
| CopyTempToOut:過濾字串 | 將符合條件的【暫存清單資料】 拷貝至 【輸出清單】 |
接著我來舉個小例子,把帳號清單內的指令運用套上,大家就粉容了解懂囉~ (帳、檔、備、註四個清單的應用都一樣,依此類推)
相信大家小學時,都有參加過 大隊接力 吧!!
就一堆人排在那裏,然後會有個 裁判 放你入操場,從 起點 跑一圈回到 終點,再換下一個人跑,一直循環,直到沒選手了,比賽就結束了…
今天,GetACcount() 這個指令就相當於這個裁判,一次取一個帳號 (一位選手),而 AccountLoop: 就相當於是跑完一圈的終點地方。
當程序(比賽) 走到 AccountLoop: (終點) 時,若還有帳號(選手)的話,就往標記(起跑點)走,若沒有就往下一行命令(結束比賽)…
其中,當裁判【 GetACcount() 】 唱名某選手進場後,這名選手的資料【***LoginID*** (指帳號)、***LoginPW*** (指密碼)】是被大會所記錄的~
所以我們可以自由調用它~ (癈話,若不驗明選手資料,那我就找隻狗來代跑,不就鐵贏的
)
最後,結束比賽 的條件除了都沒人了以外,還有突發的情況。比如突然 天空下起冰苞(AccountBreakLoop:) …
在這種情況下,當然是結束比賽速速往 逃難地點(標計處) 前進…
看完了以上的例子後,相信你已懂了七、八成。打鐵趁熱,再用一個實例來說明…
以下是MyShareBox 這個免註冊空間的上傳GDL檔…
這個例子非常的容易,先把要上傳的檔全部放入【檔案清單】中
設定一個起始點 Label:mybox-up
然後用 GetFile() 一次叫一個檔進來。宣告後就可以使用它的屬性變數 ***File*** (指完整路徑含檔名)、***FileName*** (單指檔名的部份)
再來就是整個上傳的過程: 進上傳頁--> 把檔案填入上傳那欄 --> 開始上傳 --> 取得下載連結 --> 記錄該連結到【輸出清單】中
其中每個檔案上傳完成後,先判斷一下現在【檔案清單】中的第一列資料,是否符合臨時脫離的條件,即其值為 #BreakFile。
若是,程序將移往標記名為 BREAK 的地方,反之則再往下走…
最後,走到 FileLoop:mybox-up 時,會查看【檔案清單】中還有沒有檔。
若還有,程序將移往標記名為 mybox-up 處,即我們最初設定的起始點,繼續循環整個上傳的過程。
若已無資料的話,程序就往下走,碰到 EXIT( ) ,到此整個程序就會終止!! 意即所有選手已跑完的意思囉!!
![]()
所謂的Msg 窗就是在執行窗上面再蓋上一層窗口!!
藉由特定的指令來觸發此窗口後,便可將我們要表達的訊息顯示到三個列表中!! 讓GDL的執行不再是千篇一律的看著WEB在跑…
| 輸出列表 | 錯誤列表 | 訊息來源列表 | 記錄列表 | |
| 觸發指令 | OutMsg:字串(可代變數) 字串支援 <Crlf>換行字符 |
OutErr:字串(可代變數) 字串支援 <Crlf>換行字符 |
當MSG檔伴隨著同名稱之GDL被載入時,訊息來源列表裏便會列出MSG檔裏的資料 | OutRecord:字串(可代變數) 字串支援 <Crlf>換行字符 |
| 使用時機 | 傳達當下想表達的即時訊息 | 同輸出列表功用,只是特意用"錯誤"來命名,以利辨識。可用來傳達一些比較特別的即時訊息 | 主要因為GDL的編碼模式需排除非標準ASCII碼的部份。所以針對此部份,我們可將其寫在Msg檔內來相對完成同樣的效果 | 用來記錄一些重要、必需的訊息。與其它兩列表最大不同處在於有事後性資料彙整的相關指令可運用 |
| 運用指令 |
***Msg?*** ?=1、2… 表Msg檔的第?列 GetMsg:?,***Variable?*** |
CopyOutToRecord:符合條件的一部份,第幾個參數(選擇性參數) |
例:
以上面這個例子來說,當程式載入TEST.GDL時, 與其同名的TEST.MSG 便會一起被自動加載~
所以我切換到 Msg 窗口的【 訊息來源列表】,內容就如下圖示 ~

其中, ***Msg?*** 就是第?列的值,比如 ***Msg2*** 也就代表"聰明漂亮美"
當然我們也可以用下面的方式來完成同樣的效果~
底下便是各列表的輸出結果~

