关于filelistbox中文件排列问题? |
尚未結案
|
chenpeng20000
一般會員 ![]() ![]() 發表:22 回覆:32 積分:10 註冊:2003-09-17 發送簡訊給我 |
|
g6101
高階會員 ![]() ![]() ![]() ![]() 發表:22 回覆:129 積分:110 註冊:2002-06-15 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |