关于网友提出的“ 如何提高读写文本文件的效率?”问题疑问,本网通过在网上对“ 如何提高读写文本文件的效率?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 如何提高读写文本文件的效率?
描述: procedure TTfrmMain.SBtnGOClick(Sender: TObject);
var
F: TextFile;
N: TextFile;
S: String;
T: String;
begin
S:='';T:='';
if OpenDialog1.Execute then
begin
AssignFile(N,'c:\tmp.txt');
if FileExists('c:\tmp.txt') then
Reset(N)
else
Rewrite(N);
AssignFile(F,OpenDialog1.FileName);
Reset(F);
while not eof(F) do
begin
Readln(F,S);
if (S<>T) then
begin
Append(N);
Writeln(N,S);
T:=S;
end
else
begin
T:=S;
end;
end;
CloseFile(F);
CloseFile(N);
ShowMessage('文档已处理完毕,请在c:\目录下察看');
end;
end;
以上是源代码,我是要将原文件中的不重复的行写到另外一个文件中。但是发现以上方法,处理上万行的文本文件是速度特别慢!不知道有什么提高效率的方法!
解决方案1: 试试这样:
uses IniFiles;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
StrList, RStrList: THashedStringList;
S, T: String;
begin
StrList := THashedStringList.Create;
RStrList := THashedStringList.Create;
StrList.LoadFromFile('c:\tmp.txt');
RStrList.BeginUpdate;
StrList.Sort;
S := StrList[0];
for I := 1 to StrList.Count do
begin
T := StrList[I];
if S <> T then
begin
S := T;
RStrList.Add(S);
end;
end;
RStrList.EndUpdate;
RStrList.SaveToFile('OpenDialog1.FileName');
end;
另,如果重复的行不是挨着的,你的代码并不能剔除它们。
—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
以上介绍了“ 如何提高读写文本文件的效率?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2745431.html