TXT文档路径为:D:\记录.TXT
TXT内容为:
时间 用户IP 查询类型 查询内容
2009-2-1 9:56:40 192.168.188.128 A www.sina.com
2009-2-1 9:56:41 192.168.188.128 A www.sina.com
2009-2-1 9:56:45 192.168.188.128 A www.delphisearch.cn
2009-2-1 9:56:46 192.168.188.128 A i3.sinaimg.cn
2009-2-1 9:56:46 192.168.188.128 A www.delphisearch.cn
请问大大,读取TXT文档的内容到MEMO中
我想读取的内容为查询内容下的地址
表现形式如:
查询内容 记录条数
www.sina.com 2 //代表有2条这个记录
i3.sinaimg.cn 1
....
我只会读所有,选择读取还请大家指教,谢谢,十分感谢
TXT内容为:
时间 用户IP 查询类型 查询内容
2009-2-1 9:56:40 192.168.188.128 A www.sina.com
2009-2-1 9:56:41 192.168.188.128 A www.sina.com
2009-2-1 9:56:45 192.168.188.128 A www.delphisearch.cn
2009-2-1 9:56:46 192.168.188.128 A i3.sinaimg.cn
2009-2-1 9:56:46 192.168.188.128 A www.delphisearch.cn
请问大大,读取TXT文档的内容到MEMO中
我想读取的内容为查询内容下的地址
表现形式如:
查询内容 记录条数
www.sina.com 2 //代表有2条这个记录
i3.sinaimg.cn 1
....
我只会读所有,选择读取还请大家指教,谢谢,十分感谢
按行读入,查找出要查询的串,如果表里没有的话添加 key=网址 value=1,如果已经有了就value加1
最后遍历输出key和value就可以了
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
str, TargetStr : TStringlist; i ,J,K: integer;
begin
str := TStringList.Create;
TargetStr := TstringList.Create;
try
Str.LoadFromFile('C:\test.txt');
for i := 0 to str.Count -1 do
begin
TargetStr.Append(
copy(str.Strings[i],
LastDelimiter(' ',trim(Str.Strings[i])),length(Str.Strings[i])));
end; TargetStr.Sorted := True;
TargetStr.Sort;
for I := 0 to TargetStr.Count -1 do
begin
K := 1;
for J := 0 to TargetStr.Count -1 do
begin
if i = J then continue;
if Trim(TargetStr.Strings[i]) = Trim(TargetStr.Strings[j]) then inc(k);
end;
if Memo1.Lines.IndexOf(TargetStr[i] +' '+inttostr(k)) = -1 then Memo1.Lines.Append(TargetStr[i] +' '+inttostr(k));
end;
finally end;
end;end.亂寫的。你可以改進下,用HASH表去查
华仔的程序很详细了
关键函数是LastDelimiter,取得最后一空格的位置
谢谢bdmh的提示,谢谢.马上给分
var
str, TargetStr : TStringlist;
list : TListItem;
i ,J,K : Integer;
begin
str := TStringList.Create;
TargetStr := TstringList.Create;
try
Str.LoadFromFile('C:\test.txt');
for i := 0 to str.Count -1 do
begin
TargetStr.Append(
copy(str.Strings[i],
LastDelimiter(' ',trim(Str.Strings[i])),length(Str.Strings[i])));
end;
str.Clear; TargetStr.Sorted := True;
TargetStr.Sort;
for I := 0 to TargetStr.Count -1 do
begin
K := 1;
for J := 0 to TargetStr.Count -1 do
begin
if i = J then continue;
if Trim(TargetStr.Strings[i]) = Trim(TargetStr.Strings[j]) then inc(k);
end; if str.IndexOf(TargetStr[i] +' '+inttostr(k)) = -1 then
begin
str.Add(TargetStr[i] +' '+inttostr(k));
list := ListView1.Items.Add;
list.Caption := TargetStr[i];
list.SubItems.Text := Inttostr(k);
end; end;
finally
FreeAndNil(Str);
FreeAndNil(TargetStr);
end;
end;