文件指针+listview按数字排序的超级难题(多人无法解决)(30分)

  • 主题发起人 主题发起人 grand2004
  • 开始时间 开始时间
G

grand2004

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟刚刚学习delphi,想用其编写一个日志分析工具(日志文件是纯文本文件),必须将日志中的每一天字符串分别读出来进行分析(readln),由于需要重复使用文件,所以当文件指针移动到文件尾的时候,不知道应该怎么把它再移到文件头,小弟的代码大致如下:
var
F : textfile;
I : integer;
begin
Assignfile(F,edit1.Text);
reset(F);
FOR I := 1 to 10 do
begin
while not eof(f) do
......
end;
seek(f,0);//这个方法不对,哪位前辈能告诉我这里应该使用什么方法让文件指指针指向文件头呢?
end;
end.

还有一个问题,就是日志分析工具小弟先用的是用listview(viewstyle属性设置为vsReport)组件进行表格输出,一共输出9列,除第一列用户名之外,其它都是登录次数等与数字有关的内容,但是从第二列往后排序的时候listview只按字母进行排序,9竟然排在19的前面,请问各位高手,怎么才能让他按照实际的数字大小进行排序呢?
 
前面加 空格
或 0009 ,0019
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
sl: TstringList;
i: integer;
begin
sl := TstringList.Create;
sl.Add('23');
sl.Add('23');
sl.Add('453');
sl.Add('873');
sl.Add('3');
sl.SaveToFile('c:/1.txt');
freeandnil(sl);

sl := TstringList.Create;
sl.LoadFromFile('c:/1.txt');
for i := 0 to sl.Count - 1 do
sl := format('%6s', [sl]);
sl.Sort;

for i := 0 to sl.Count - 1 do
sl := trim(sl);

Memo1.Lines.Assign(sl);

freeandnil(sl);

end;

end.

 
小弟使用的是listview组件进行输出的,由于我刚刚开始学习delphi,高深的不会,只能先使用listview组件了,楼上的老兄写的东西小弟一时无法看懂,有没有更简单实用的办法?
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
后退
顶部