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

使用 TIdFTP元件,如何用時間排序

缺席
mnsf
初階會員


發表:104
回覆:90
積分:48
註冊:2003-11-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-02-19 11:25:11 IP:220.128.xxx.xxx 訂閱
使用TIdFTP.List(List1.Items,'*.*',false)時,回傳的List1.Items的結果是依據檔名排序,
可否有什麼方法是以檔案的時間排序?
mnsf
初階會員


發表:104
回覆:90
積分:48
註冊:2003-11-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-02-20 13:34:43 IP:220.128.xxx.xxx 訂閱
自己找到一個笨方法,提供給大家參考。 


[code delphi]
begin
ListBox2.Sorted:=true;
IdFTP1.List(ListBox1.Items,'*.*',true);
for i:=0 to ListBox1.items.count-1 do
begin
str:=ListBox1.items.strings[i];
//以下是str的內容範例
//-rw-r--r-- 1 508 509 1192 Feb 19 11:10 111.csv
str:=SetMultiEmptytoSingleEmpty(str);//將多個空白字元,換成一個空白字元
//以下是str的內容範例
//-rw-r--r-- 1 508 509 1192 Feb 19 11:10 111.csv
//再以空白字元做區隔,組合出 'Feb 19 11:10,111.csv'的字串,放入ListBox2中
str1:=split1(' ',str,6) split1(' ',str,7) split1(' ',str,8) ',' split1(' ',str,9);
ListBox2.Items.Add(str1);
end;
//ListBox2的內容就會是以時間由大至小排序,再用,去區分時間及檔名
//就可以找出時間最早的檔名=split1(',',ListBox2.items.string[1],2)
//時間最晚的檔名=split1(',',ListBox2.Items.Strings[ListBox2.Items.count-1],2)
end;
function SetMultiEmptytoSingleEmpty(str: string): string;
var i,j:integer;
tmpStr:string;
begin
for i:=100 downto 2 do
begin
tmpStr:='';
for j:=1 to i do
tmpStr:=tmpStr ' ';
str:=ansireplacestr(str,tmpStr,' ');
end;
result:=str;
end;
function split1(comma,original: string; index: integer): string;
var
//comma:char;
original2,divided,sTemp:string;
ipos,LengthOrigial:integer; //,myStringListCount ,iposend
myStrList:tstringlist;
begin
try
//comma:=' '; //分隔符號,可改成其它如分號,冒號等識別
myStrList:=tstringlist.Create; //myStrList存放分解後字串的地方
original:=original;
original2:=original;
ipos:=pos(comma,original2);
while (ipos<>0) do //當找到分隔符號跳出迴圈
begin
original2:=original;
ipos:=pos(comma,original2); //ipos為分隔符號所在位置
LengthOrigial:=length(original2); //LengthOrigial為待拆解字串長度
divided:=copy(original2,1,ipos-1); //divided為拆解出字串
myStrList.Add(divided); //將拆解出字串存於myStrList
sTemp:=copy(original,ipos 1,LengthOrigial-ipos); //去除掉拆解出字串即分隔符號後的字串
original:=sTemp; //重新交回給original去Run迴圈
end;
finally
myStrList.Delete(myStrList.Count-1);
myStrList.Add(original); //將最後分隔符號 後之字串加入myStrList
end;
result:=Trim(myStrList.strings[index-1]);
myStrList.Free;
end;
[/code]
編輯記錄
mnsf 重新編輯於 2009-02-20 13:35:33, 註解 無‧
mnsf 重新編輯於 2009-02-20 13:36:40, 註解 無‧
系統時間:2024-04-19 13:14:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!