如果装到TStringList中其实等同于装到内存中,号资源。 是否可以做一个函数,如下: function GetTextLine(szFile:TFileName; var nLine:Integer):string; var f:TextFile; i:Integer; begin i:=0; Assign(f, szFile); Reset(f); if nLine=-1 then while not Eof(f) do begin Inc(i); ReadLn(f, Result); end else while (not(Eof))and(i<nLine) do begin Inc(i); ReadLn(f, Result); end; CloseFile(f); nLine:=i; end; 这样当nLine传递-1是将在nLine中返回文本的总行数, 当传递其他值时返回指定的字符串。 (未测试!)
前二个朋友的方法都是要先读到内存里的,我不想这样, to lovingkane(红狐狸) :呵呵,朋友,你试试读十几M的ini文件看看^&^。 to inbud(清风侠) :我昨晚上已经实现了,思路和你的差不多,我想可能也只有这个方法好一点,关键是不知道f:TextFile;有没有方法直接访问指定行,我想那样肯定要节约些!如果后面没有更好的答案了,分就给你了!
前二个朋友的方法都是要先读到内存里的,我不想这样, to lovingkane(红狐狸) :呵呵,朋友,你试试读十几M的ini文件看看^&^。 to inbud(清风侠) :我昨晚上已经实现了,思路和你的差不多,我想可能也只有这个方法好一点,关键是不知道f:TextFile;有没有方法直接访问指定行,我想那样肯定要节约些!如果后面没有更好的答案了,分就给你了!
但是可以这样折中程序启动的时候,加载文本文件,然后给每行加一个行标,再写入到一个临时的ini文件中,关闭文本文件。然后你就可以读取固定行的内容了。程序关闭后,再删掉这个临时的ini文件。
是否可以做一个函数,如下:
function GetTextLine(szFile:TFileName; var nLine:Integer):string;
var
f:TextFile;
i:Integer;
begin
i:=0;
Assign(f, szFile);
Reset(f);
if nLine=-1 then
while not Eof(f) do
begin
Inc(i);
ReadLn(f, Result);
end
else
while (not(Eof))and(i<nLine) do
begin
Inc(i);
ReadLn(f, Result);
end;
CloseFile(f);
nLine:=i;
end;
这样当nLine传递-1是将在nLine中返回文本的总行数,
当传递其他值时返回指定的字符串。
(未测试!)
to lovingkane(红狐狸) :呵呵,朋友,你试试读十几M的ini文件看看^&^。
to inbud(清风侠) :我昨晚上已经实现了,思路和你的差不多,我想可能也只有这个方法好一点,关键是不知道f:TextFile;有没有方法直接访问指定行,我想那样肯定要节约些!如果后面没有更好的答案了,分就给你了!
to lovingkane(红狐狸) :呵呵,朋友,你试试读十几M的ini文件看看^&^。
to inbud(清风侠) :我昨晚上已经实现了,思路和你的差不多,我想可能也只有这个方法好一点,关键是不知道f:TextFile;有没有方法直接访问指定行,我想那样肯定要节约些!如果后面没有更好的答案了,分就给你了!