線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1266
推到 Plurk!
推到 Facebook!

关于filelistbox中文件排列问题?

尚未結案
chenpeng20000
一般會員


發表:22
回覆:32
積分:10
註冊:2003-09-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-26 15:32:45 IP:211.64.xxx.xxx 未訂閱
我在程序中有TFileListBox物件,显示f:\\image\\中的文件。每隔几秒钟在image文件夹下增加一个档案,此档案我以系统时间命名。我如何控制TFileListBox中文件的排列方式?例如我想每增加一个档案,使此档案出现在第一个位置。我用了update()总是按时间顺序排列的。 努力学习 發表人 - taishyang 於 2004/03/26 15:44:27
------
努力学习
g6101
高階會員


發表:22
回覆:129
積分:110
註冊:2002-06-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-26 23:12:21 IP:163.29.xxx.xxx 未訂閱
chenpeng20000 您好: 若要以時間做為檔案的排列順序,提供以下幾點意見供作參考 (1)建議你將TFileListBox換成TListView元件,因為它包裝了以欄位為基礎的排序方法(見BCB Help),使用非常方便。 (2)若硬要使用TFileListBox元件的話,我們假設現在時間為2004/03/26 15:04:07,而檔名為20040326150407.bmp當啟動Update()來更新檔名時,它是按照檔名字元由小到大做排列,這時你可以使用for 迴圈再配合Exchange(int,int)方法將檔名前後順序對調即可。 (3)若檔名是不規則,而創建和寫入的時間差是固定(2秒),你可以使用TTimer元件來找出最近產生的檔案,方法參考如下    #include "stdio.h" TDateTime dtTime; TDateTime DTime = Now(); void __fastcall TForm1::Timer1Timer(TObject *Sender) { //建立檔案結構 WIN32_FIND_DATA fs; HANDLE he; char pathbuf[MAX_PATH]; FILETIME nLocalTime; SYSTEMTIME STime; sprintf(pathbuf,"%s*.*","f:\\image\\"); if ((he = FindFirstFile(pathbuf,&fs)) != INVALID_HANDLE_VALUE) { do { FileTimeToLocalFileTime(&fs.ftLastWriteTime,&nLocalTime); FileTimeToSystemTime(&nLocalTime,&STime); dtTime = SystemTimeToDateTime(STime); if (dtTime > DTime) { FileListBox1->Items->Insert(0,ExtractFileName(fs.cFileName)); } } while (FindNextFile(he,&fs)); DTime = Now(); FindClose(he); } } (4)若檔名及寫入都是不規則的,就必須使用結構陣列或TStringList來排序,再將檔名匯入TFileListBox元件中;總之,方法很多,就看是否合乎需求。 幾點建議,希望對你有幫助.
chenpeng20000
一般會員


發表:22
回覆:32
積分:10
註冊:2003-09-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-27 15:22:20 IP:211.64.xxx.xxx 未訂閱
非常感谢您的关注 问题解决了 努力学习
------
努力学习
系統時間:2024-06-26 11:43:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!