*.TXT檔案內資料 如何將三天前資料刪除再存檔 |
尚未結案
|
kay617
一般會員 發表:5 回覆:4 積分:1 註冊:2004-06-10 發送簡訊給我 |
2005/12/01 15:52:40:739, TEST
2005/12/01 15:58:33:627, TEST
2005/12/01 15:58:37:372, TEST
2005/12/01 15:58:38:594, TEST
2005/12/01 15:58:38:814, TEST
2005/12/01 15:58:38:994, TEST
2005/12/01 15:58:39:185, TEST
2005/12/01 15:58:39:365, TEST
2005/12/02 15:58:39:525, TEST
2005/12/02 15:58:39:746, TEST
2005/12/02 15:58:39:916, TEST
2005/12/02 15:58:40:106, TEST
2005/12/02 15:58:40:427, TEST
2005/12/02 15:58:40:617, TEST
2005/12/02 15:58:45:434, TEST
2005/12/02 15:58:45:614, TEST
2005/12/02 15:58:45:804, TEST
2005/12/02 15:58:45:995, TEST
2005/12/03 15:58:46:145, TEST
2005/12/03 15:58:46:335, TEST
2005/12/03 15:58:46:475, TEST
2005/12/03 15:58:46:665, TEST
2005/12/03 15:58:46:856, TEST
2005/12/03 15:58:47:46, TEST
2005/12/03 15:58:47:136, TEST
2005/12/03 15:58:47:387, TEST
2005/12/03 15:58:47:577, TEST
2005/12/03 15:58:47:737, TEST
2005/12/03 15:58:48:348, TEST
2005/12/03 15:58:48:819, TEST
2005/12/04 15:58:48:989, TEST
2005/12/04 15:58:49:930, TEST
2005/12/04 15:58:50:120, TEST
2005/12/04 15:58:50:281, TEST
2005/12/04 15:58:50:481, TEST
2005/12/05 10:45:10:825, TEST
.
.
.
.
我的*.Txt檔內會依日期時間一直記錄資料
但是因為檔案有數百個 要定時清理
比如上面的檔案內容 我要刪除2005/12/03前的資料
這樣*.Txt才不會無限長大
我有想過用TstringList操作 但是還是想不到快一點的方法
各位先知 可以幫忙一下嗎 感恩不盡ㄚ
|
huwk
資深會員 發表:26 回覆:340 積分:323 註冊:2002-04-03 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, LMDCustomComponent, LMDContainerComponent, LMDBaseDialog, LMDDirDlg, StdCtrls; type TForm1 = class(TForm) Button1: TButton; LDD: TLMDDirDlg; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); private function CreateFileList(Dir: string): TStringList; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var I: Integer; F, FileList: TStringList; Key, SourceDir: string; begin if LDD.Execute then begin SourceDir := LDD.Path; FileList := CreateFileList(LDD.Path); try Key := FormatDateTime('YYYY/MM/DD', Now-3);//三天前的日期 for I := 0 to FileList.Count-1 do begin if FileExists(FileList[I]) then begin F := TStringList.Create; try F.LoadFromFile(FileList[I]); while F.Count > 0 do if F[I] < Key then F.Delete(0) else Break; F.SaveToFile(FileList[I]); finally F.Free; end; end; Application.ProcessMessages; end; finally FreeAndNil(FileList); end; end; end; function TForm1.CreateFileList(Dir: string): TStringList; procedure CreatingFileList(SubDir: string); var F: TSearchRec; begin if FindFirst(SubDir '\*.*', faAnyFile, F) = 0 then repeat if (F.Name<>'.') and (F.Name<>'..') then begin if F.Attr and faDirectory = faDirectory then CreatingFileList(SubDir '\' F.Name) else if Pos('.TXT', UpperCase(F.Name)) > 0 then Result.Add(SubDir '\' F.Name); end; until FindNext(F) <> 0; FindClose(F); end; begin Result := TStringList.Create; CreatingFileList(Dir); end; end. |
kgt
高階會員 發表:17 回覆:308 積分:165 註冊:2002-03-13 發送簡訊給我 |
|
fangwy
中階會員 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
大家好! 我之前建議處理的步驟: 1.CreateFileList: 用一個TStringList將SourceDir下,以及SourceDir之下所有子目錄的 所有檔案一次產生Full Path的FileName List. 2.Iterate 所有檔案: @OpenFile->利用另一個TStringList.LoadFromFile(FileName[I]); @比較Key值並且刪除不要的資料; @SaveFile->叫用TStringList.SaveToFile(FileName[I]); ***另外也可以運用Pos()來直接Locate到想要的資料位置,例如: procedure ProcessData(L: TStringList; Key: string); var P: Integer; begin P := Pos(Key, L.Text); if P <> 0 then L.Text := Copy(L.Text,P 1,Length(L.Text)); end; procedure TForm1.Button1Click(Sender: TObject); var I: Integer; F, FileList: TStringList; Key, SourceDir: string; begin if LDD.Execute then begin SourceDir := LDD.Path; FileList := CreateFileList(LDD.Path); try Key := FormatDateTime('YYYY/MM/DD', Now-3);//三天前的日期 F := TStringList.Create; try for I := 0 to FileList.Count-1 do begin Application.ProcessMessages; if FileExists(FileList[I]) then begin F.LoadFromFile(FileList[I]); ProcessData(F, Key); F.SaveToFile(FileList[I]); end; end; finally F.Free; end; finally FreeAndNil(FileList); end; end; end;發表人 - jow 於 2005/12/07 18:57:08 |
kay617
一般會員 發表:5 回覆:4 積分:1 註冊:2004-06-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |