重復讀取不斷更新的文字檔案內容 |
答題得分者是:小傑克
|
MrAlmost
一般會員 發表:1 回覆:1 積分:0 註冊:2009-08-01 發送簡訊給我 |
各位大大:
小弟現在有一個問題:有一個別人開發的程式不斷(每隔2-4秒,不太定時,視數據而定)產生數據到同一個檔案中,檔案內容為現時的數據,之前的數據不會被保留在檔案中。 我的工作是開發一個程式去讀取數據檔案,之後再處理以及顯示出來。我的方法是使用一個while loop 及用FileGetDate(hfile1),去比對檔案的更新時間,以決定檔案是否已被重新寫入。程式碼如下: [code delphi] procedure TForm1.Timer1Timer(Sender: TObject); var hfile1: HWND; fileDate : integer; FileCreateTime, OldFileCreateTime : string; begin hfile1:=CreateFile(PChar('C:\aaa.dat'),GENERIC_READ ,0,nil,OPEN_EXISTING ,0,0 ); fileDate := FileGetDate(hfile1); OldFileCreateTime := inttostr(filedate); closehandle(hfile1); hfile1:=CreateFile(PChar('C:\aaa.dat'),GENERIC_READ ,0,nil,OPEN_EXISTING ,0,0 ); fileDate := FileGetDate(hfile1); FileCreateTime := inttostr(filedate); closehandle(hfile1); while (FileCreateTime = OldFileCreateTime) do begin hfile1:=CreateFile(PChar('C:\aaa.dat'),GENERIC_READ ,0,nil,OPEN_EXISTING ,0,0 ); fileDate := FileGetDate(hfile1); FileCreateTime := inttostr(filedate); closehandle(hfile1); if (FileCreateTime = '-1') then FileCreateTime := OldFileCreateTime; //memo2.Lines.Add('Data is ' FileCreateTime); end; process_data; end; [/code] 可是現在的問題是,有時候數據檔案讀不出來,數據內容為空白的。懷疑是產生數據的程式同時在寫入,導致讀取到並不是最終的資料。小弟try了好久,仍解決不了問題,故特請教各位大大,對於這種重復讀取不斷更新的文字檔案內容的工作,有什麼比較好的處理方式? |
AndrewK
高階會員 發表:6 回覆:151 積分:161 註冊:2006-10-09 發送簡訊給我 |
提供一些建議給你參考
1.我想你可以先偵錯你的程式,在邏輯上是不是有問題 2.解決程式問題後在估計,你的 process_data 大約需多少時間 有沒有 lose 資料的可能性,或是造成來源程式無法寫入的錯誤發生
------
Just Do It ------------------------- 其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。 |
RootKit
資深會員 發表:16 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
|
小傑克
資深會員 發表:5 回覆:209 積分:357 註冊:2009-02-16 發送簡訊給我 |
之前有人做過用API 監控路徑變化,相同的方法應該可以對檔案作業(推測...)
http://delphi.ktop.com.tw/board.php?cid=30&fid=72&tid=92396 當有變化的時候會獲取一個event , 可以在那個時候複製一份檔案到另依個地方然後讀出,這樣 大概可以避過 filehandle 卡住的問題(純想像....沒實做不確定)
------
額有朝天骨,眼中有靈光 |
MrAlmost
一般會員 發表:1 回覆:1 積分:0 註冊:2009-08-01 發送簡訊給我 |
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |