本文件如何排序(100分)

  • 主题发起人 主题发起人 江林勝
  • 开始时间 开始时间

江林勝

Unregistered / Unconfirmed
GUEST, unregistred user!
以下是一個文本文件,如何按號碼日期,時間排序,不用寫到數據庫中排序.
日期 時間 號碼
2000/06/01 07 50 111111
2000/06/01 07 47 222222
2000/06/02 07 12 111111
2000/06/01 07 18 222222
2000/06/02 07 29 111111
2000/06/02 07 23 222222
2000/06/02 07 31 222222
2000/06/01 07 25 111111
2000/06/02 08 30 222222
2000/06/01 07 72 111111
2000/06/01 07 30 111111
 
由于文本文件的格式是知道,你可以先把文件输出到数组中,然后按照自己所需的进行
排序,再写回原文件.
 
如果排序字段的顺序恰好与在文件中的相同,则
stringlist.loadfromfile;
stringlist.sort;
stringlist.savetofile
即可。
你这个例子中号码在最后面,可以自己对每个string处理一下,
把号码对应的string挪到前面来,再sort。
 
真是一刀见血
 
to:温柔一刀
麻煩你給出一個例子如何?
多謝
 
什么样的例子?我看我那三行代码已经够例子了,
var
mylist:tstringlist;
i:smallint;
begin
mylist:=tstringlist.create();
mylist.loadfromfile('aaa.txt');
for i:=0 to mylist.count-1do
mylist:=copy(mylist,15,6)+delete(mylist,15,6);
//其中15改为号码字段的起始位置,6改为相应的长度
mylist.sort;
mylist.savetofile('aaa.txt');
end;

注:此段程序未测试,在浏览器里写的。
 
oh,I am late.
agree with 温柔一刀
TStringList use Quick Sort to sort data.
 

with 温柔一刀:
利害,在下佩服。
mylist.sort;//真是妙极了。

 
接受答案了.
 
抱歉,有一句写得不太对
>>mylist:=copy(mylist,15,6)+delete(mylist,15,6);
应该是
>>mylist:=copy(mylist,15,6)+copy(mylist,1,14)之类
不过我想江林勝兄肯定没有受我的误导吧 :-)
 
后退
顶部