Txt文件的定位(80分)

  • 主题发起人 主题发起人 吴向球
  • 开始时间 开始时间

吴向球

Unregistered / Unconfirmed
GUEST, unregistred user!
请问在TXT文件中,怎么样在文件中的行到行的跳动。如:现在在第五行,我怎么样
跳到第四行,再从第四行跳到第三行。或者我怎么样跳到第六行。
 
做个子程序,查找回车,返回行数所在行字符串
 
读到一个StringList中再跳吧
 
如果文本很大,不是很占用系统性能
 
TStringList.Strings[行数]
 
如果是只读不写的话,可以先用Pos将文件扫描一遍,同时用一个数组保存每个回车的具体位置。
然后Seek就可以了。
如果要写文件的话,将数据结构稍微变化一下即可:
例如:数组中的每个元素表示每行的字符数,然后...
 
用seek过程不就好了,delpi有自带例子
var
f: file of Byte;
size : Longint;
S: string;
y: Integer;
begin
if OpenDialog1.Execute then
begin
AssignFile(f, OpenDialog1.FileName);
Reset(f);
size := FileSize(f);
S := 'File size in bytes: ' + IntToStr(size);
y := 10;
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
S := 'Seeking halfway into file...';
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
Seek(f,size div 2);
S := 'Position is now ' + IntToStr(FilePos(f));
Canvas.TextOut(5, y, S);
CloseFile(f);
end;
end;
 
terry_lzs:
例子是file of Byte;,不是text。。
delphi自带的对于文本文件的操作的函数和过程实在是太差劲了。。。
希望哪位富翁好好的。。。修饰一下!!!
 
可以使用TFileStream进行操作,很方便的。
 
我也曾想过用TFileStream,但不知怎么用的,请dxqsoft详细说来听听
 
首先创建一个TFileStream打开要处理的文本文件,然后就可以和TMemoryStream一样对这个
流进行扫描和修改了,比如你要从一行跳到另一行,可以扫描关键字$13$10(return),可以
使用TFileStream.Position定位文本位置。
其实如果你要处理的文本不大的话,还是使用TStringList最方面快速,如果要处理的文本
很大的话,使用TFileStream可能好些。
 
$13 and $10 都是字符型的?怎么样和这个流来做比较呢?
 
可以对流中的每个字节进行对比的
 
为什么要用TFileStream和TMemoryStream?
用TStringList读入过后,自动就按照#13#10分行了,
要交换两行不就是简单的TStringList.Exchange(4, 5)了嘛
 
使用TStringList
 
提个额外的问题:请问TFileStream和TMemoryStream哪个更适合处理比如几十M大的文本文件?谢谢。
对很大的文本文件进行全文检索什么办法最好最快?是想在文件中提取所有包含某些字符的不定长
的句子。
 
直接用readln就不行了
procedure goline(li:integer);
var
i:integer;
begin
reset(file);
for i:=0 to li-1 do
readln;
end;
end;
 
strings.loadfrom('yourfile.txt');
然后,你就怎样都可以了!!
 
多人接受答案了。
 
后退
顶部