字體:小 中 大 | |
|
|
2010/09/04 23:12:08瀏覽1184|回應3|推薦56 | |
筆者有訂閱部落格的文章,可是並非每日都閱讀,如果積存多日,再整批閱讀,會發生重複叫出部落客的問題。如果能設計一個工具,將同一位作者的新文章數統計出來,就不需要將文章清單一筆一筆叫出;它的好處是每一位作者只需要叫出一次,然後根據文章數,可以方便地決定想閱讀的篇數。 想進行統計,需要設計一個程式和兩個資料檔,執行的環境是FOXPRO,程式名稱是ARTICLE.PRG,資料檔是ARTICLE.DBF,中間檔是ARTICLE2.DBF。 ARTICLE.DBF的資料結構,如下所示: 欄位 欄位名稱 類型 寬度 小數位數 索引 排序 Nulls 1 REMARK 字元型態 1 否 2 PAGE 數值型態 2 否 3 CNT 數值型態 2 否 4 CONTENT 字元型態 100 否 ARTICLE2.DBF的資料結構,如下所示: 欄位 欄位名稱 類型 寬度 小數位數 索引 排序 Nulls 1 TITLE 字元型態 60 否 2 CNT 數值型態 2 否 操作步驟如下: (1) 將訂閱的文章清單複製到記事本。 (2) 在記事本中,將空白行和需用資料以外的內容去掉,每一行再往右退3格,存檔名稱例如取為XX.TXT。 (3) 進入FOXPRO。 (4) 將文章清單轉入資料檔,應打入如下的命令: USE ARTICLE ZAP APPEND FROM XX SDF USE (5) 執行程式,應打入如下的命令: DO ARTICLE (6) 將最後結果轉到一般文件檔,應打入如下的命令: USE ARTICLE COPY TO ARTICLE SDF USE 實際案例: 程式執行前,資料檔ARTICLE.DBF的內容,如下所示: 【紅茶芢的部落格】部落格有 1 篇最新發表創作。 2010/09/03 07:32 刪除 【價值的迷失論】部落格有 5 篇最新發表創作。 2010/09/03 07:32 刪除 【曾經滄海難為水?除卻巫山不是雲】部落格有 4 篇最新發表創作。 2010/09/03 07:31 刪除 【戀戀風塵的部落格】部落格有 1 篇最新發表創作。 2010/09/03 07:31 刪除 【戴媽醬廚心】部落格有 1 篇最新發表創作。 2010/09/02 07:32 刪除 【價值的迷失論】部落格有 2 篇最新發表創作。 2010/09/02 07:32 刪除 【熟女?示錄】部落格有 1 篇最新發表創作。 2010/09/02 07:32 刪除 【MmMm的無牆教室】部落格有 1 篇最新發表創作。 【曾經滄海難為水?除卻巫山不是雲】部落格有 6 篇最新發表創作。 2010/09/02 07:32 刪除 【開心的部落格】部落格有 1 篇最新發表創作。 2010/09/02 07:32 刪除 程式ARTICLE.PRG的內容,如下所示(*號代表註解行): SET TALK OFF SET SAFETY OFF * 打開資料檔 SELECT 1 USE ARTICLE * 打開中間檔 SELECT 2 USE ARTICLE2 * 清檔 ZAP * 產生索引檔 INDEX ON TITLE TO XX2 * 設行數計數器 MNO = 21 * 設頁次計數器 MPAGE = 0 * 將資料檔每一筆都處理一遍 SELECT 1 DO WHILE .NOT. EOF() * 行數每遇20,則頁數加1 IF MNO >= 20 MPAGE = MPAGE + 1 MNO = 0 ENDIF MNO = MNO +1 * 將頁數寫入資料檔 REPLACE PAGE WITH MPAGE * 取得部落格的名稱 MTITLE = LEFT(CONTENT,AT("】",CONTENT)+1) * 到中間檔去搜尋 SELECT 2 SEEK MTITLE * 如果找不到記錄 IF .NOT. FOUND() APPEND BLANK * 將部落格名稱寫入中間檔 REPLACE TITLE WITH MTITLE * 將文章數寫入中間檔 REPLACE CNT WITH VAL(SUBSTR(A->CONTENT,AT("部落格有",A->CONTENT)+8,2)) * 如果找得到記錄 ELSE * 將文章數與原來的文章數相加,再寫入中間檔 REPLACE CNT WITH CNT + VAL(SUBSTR(A->CONTENT,AT("部落格有",A->CONTENT)+8,2)) SELECT 1 * 在資料檔註記重複記號 REPLACE REMARK WITH "X" ENDIF * 將資料檔移到下一筆 SELECT 1 SKIP ENDDO * 將資料檔關閉再打開 SELECT 1 USE USE ARTICLE * 將資料檔每一筆都處理一遍 DO WHILE .NOT. EOF() * 如果屬於非重複的部落格 IF REMARK = " " * 取得部落格的名稱 MTITLE = LEFT(CONTENT,AT("】",CONTENT)+1) * 到中間檔做搜尋 SELECT 2 SEEK MTITLE * 如果找得到 IF FOUND() SELECT 1 * 將文章數寫入資料檔 REPLACE CNT WITH B->CNT ENDIF ENDIF * 將資料檔移到下一筆 SELECT 1 SKIP ENDDO CLOSE ALL SET SAFETY ON SET TALK ON 程式執行後,中間檔ARTICLE2.DBF的內容摘錄,如下所示: 【堅強是我的名字】 1 【紅茶芢的部落格】 1 【價值的迷失論】 7 【幸福摩天輪】 1 【萬紫千虹】 1 【法蘭客的部落格】 2 【熟女?示錄】 2 【曾經滄海難為水?除卻巫山不是雲】 10 【Uncle's Blog】 2 【caja12 的部落格】 1 備註:中間檔每一位部落客只會占一筆 程式執行後,資料檔ARTICLE.DBF的內容摘錄,如下所示: 1 1【紅茶芢的部落格】部落格有 1 篇最新發表創作。 2010/09/03 07:32 刪除 1 7【價值的迷失論】部落格有 5 篇最新發表創作。 2010/09/03 07:32 刪除 1 10【曾經滄海難為水?除卻巫山不是雲】部落格有 4 篇最新發表創作。 2010/09/03 07:31 刪除 1 2【戀戀風塵的部落格】部落格有 1 篇最新發表創作。 2010/09/03 07:31 刪除 2 1【戴媽醬廚心】部落格有 1 篇最新發表創作。 2010/09/02 07:32 刪除 X 2 0【價值的迷失論】部落格有 2 篇最新發表創作。 2010/09/02 07:32 刪除 X 2 0【熟女?示錄】部落格有 1 篇最新發表創作。 2010/09/02 07:32 刪除 2 1【MmMm的無牆教室】部落格有 1 篇最新發表創作。 X 3 0【曾經滄海難為水?除卻巫山不是雲】部落格有 6 篇最新發表創作。 2010/09/02 07:32 刪除 3 1【開心的部落格】部落格有 1 篇最新發表創作。 2010/09/02 07:32 刪除 備註:(1) 前面有X符號者,代表重複,應省略不看。 (2) 左邊第1個數字代表在訂閱文章清單的頁次,第2個數字代表待閱讀的新文章數。 訂閱的部落格文章,如果能每日閱讀,當然是最理想的;如果不能的話,統計每一位部落客多日的新文章數,然後再去閱讀,比起去一一叫出每日每位部落客的新文章省事。此次實作的環境是使用FOXPRO,當然也可以使用其它的程式環境來實作。 |
|
( 興趣嗜好|電腦3C ) |