好了,這是不是植酮,但德爾福(的標籤已被移除?)
我不得不重新思考這一切,再一次。這一次我收穫了。
我寫了自己的rutine將文件加載到列表框中,並對其進行了冒泡排序。 之後,我可以提取未處理的文件名。
測試場景:4628個文件
測試分析是這樣的:
加載文件列表分爲: TFileListBox時間:2,24 TFileListBoxEx時間:1,52 TJvFileListBox時間:59,28(WTF Jvl的libralies有錯嗎?)
自己rutine有日期時間信息和冒泡排序到加載文件: 的TListBox時間:1,61
// Get files list
if FindFirst(C_MailIncomingDir+'\*.eml', faAnyFile, Rec) = 0 then
repeat
Setlength(FileList, Length(FileList) + 1);
Setlength(DateList, Length(DateList) + 1);
FileList[High(FileList)]:= Rec.Name;
DateList[High(DateList)]:= FileDateToDateTime(Rec.Time);
until FindNext(Rec) <> 0;
FindClose(Rec);
// Sort
// Bubble sort
repeat
Done:= True;
for i:= 0 to High(FileList) - 1 do
if DateList[i] > DateList[i + 1] then
begin
Done:= False;
TempName:= FileList[i];
FileList[i]:= FileList[i + 1];
FileList[i + 1]:= TempName;
TempDate:= DateList[i];
DateList[i]:= DateList[i + 1];
DateList[i + 1]:= TempDate;
end;
until Done;
// Show in list
FilesInDir.Clear;
for i:= 0 to High(FileList) do
FilesInDir.Items.Add(FileList[i] + ' ' + DateTimeToStr(DateList[i]));
通過由日期時間排序的文件,有可能diff的出尚未處理的所有文件用這一行(0,06而不是10秒爲4500個文件):
for I := FileListHandled.Count to FilesInDir.Count-1 do
FilesNeedHandling.Items.Add(FilesInDir.Items[i]);
我有這個想法。 –
如果你運行這個,每小時說一次,你可以通過選項「-mmin -60」找到在最近60分鐘內修改的所有文件。我認爲這應該涵蓋所有文件。 –
如果程序在一個週末崩潰,將會有一段時間的差距,並且還會有文件將被處理多次的風險(這就是爲什麼我將處理後的文件名保存到文本文件) –