訂閱新文章數的統計
2010/09/04 23:12
瀏覽1,283
迴響3
推薦56
引用0
筆者有訂閱部落格的文章,可是並非每日都閱讀,如果積存多日,再整批閱讀,會發生重複叫出部落客的問題。如果能設計一個工具,將同一位作者的新文章數統計出來,就不需要將文章清單一筆一筆叫出;它的好處是每一位作者只需要叫出一次,然後根據文章數,可以方便地決定想閱讀的篇數。
想進行統計,需要設計一個程式和兩個資料檔,執行的環境是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,當然也可以使用其它的程式環境來實作。
想進行統計,需要設計一個程式和兩個資料檔,執行的環境是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,當然也可以使用其它的程式環境來實作。
限會員,要發表迴響,請先登入
迴響(3) :
- 3樓. 平平安安2010/09/10 08:03訂閱新文章數的統計
謝謝了
很好的分享....
感謝開心小屋格友回應,本部落格從2009年6月底就設立軟體版,至今累積文章是60篇,但只有這篇是程式設計,本程式很實用,而且已附上程式註解,朋友們可改用自己熟悉的程式環境去設計。 王國良(阿國) 於 2010/09/10 17:09回覆 - 2樓. 思于2010/09/08 09:31說到程式
不行啦
對我來說
困難啦
感謝思于老師回應,寫程式雖然有點麻煩,可是一旦設計完成,卻非常有用,未來我會針對需要,適時介紹一些小程式。 王國良(阿國) 於 2010/09/08 23:12回覆 - 1樓. 【無★言】雲遊到世界的另一端2010/09/05 08:08FoxPro
十年以上沒寫FoxPro的程式了,不清楚它近十年來的發展情形.現今還有人用FoxPro嗎?感謝無言格友回應,原來您也曾用過FOXPRO。微軟在多年前推出第9版,就決定不再推出下一版,而且維護只計畫做到2015年。現今由於微軟未再推廣,學校也少教,故使用的人應會越來越少,但我個人覺得,用來設計程式還蠻好用的。
王國良(阿國) 於 2010/09/05 23:06回覆
















