怎样每一次读一行的读出一个文本文件的全部内容!

hawind 2003-10-22 05:45:44
怎样每一次读一行的读出一个文本文件的全部内容!
var
instring:string;
s:textfile;
begin
assignfile(s,extractfilepath(application.ExeName)+'text.txt');
reset(s);
readln(s,instring);
edit1.Text:=instring;
end;

我想每次读一行的读出一个文本文件的全部内容!
但上面的语句只能总是读第一行。第二行老是读不出。
怎么把当前的文本指针移到第二行开头呢!
然后下一次再读出第二行的内容呢!
...全文
134 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hawind 2003-10-26
呵呵!
感谢大家这么帮在下。无柰小弟我积分太少!只能供出屈屈20分。
就这么着吧!平分了,
谢放大家!
  • 打赏
  • 举报
回复
lance 2003-10-25
》一次性读出,而后再处理,即高效,又方便。
对于一个上百兆的文件,word会一次读出?
  • 打赏
  • 举报
回复
lance 2003-10-25
不要用什么TStringList,对于巨型文件比如几十兆,上百兆的文件,TStringList根本就
无能为力。
  • 打赏
  • 举报
回复
lance 2003-10-25
for i:=1 to CurLine-1 do
begin
readln(f);
end;

for i:=CurLine to CurLine+23 do
begin
readln(f,s);
writeln(s);
end;
  • 打赏
  • 举报
回复
ywz77 2003-10-24
private
slist: TStringList;
curIndex: integer; //当前的行号


procedure TForm1.FormCreate(Sender: TObject);
begin
slist := TStringList.create;
slist.loadFromFile('文件名');

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
resultStr := sList.string(curIndex-1);
Inc(curIndex);

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
slist.free;
end;
  • 打赏
  • 举报
回复
lwsi 2003-10-23
//把S声明的全局
var
Form1: TForm1;
S: TextFile;
implementation

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
AssignFile(S, ExtractFilePath(Application.ExeName)+'text.txt');
Reset(S);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
InString: string;
begin
if not Eof(S) then
begin
Readln(S, InString);
Edit1.Text := InString;
end;
end;
  • 打赏
  • 举报
回复
zhxfzhxf1 2003-10-23
严重同意Taken(铁拳)
一次性读出,而后再处理,即高效,又方便。
  • 打赏
  • 举报
回复
TStrings操作方便些 但textfile更底层些
  • 打赏
  • 举报
回复
angle097113 2003-10-23
我觉得是楼上说的对的
用TStringlist来实现 先获得文本的行数 然后读取
  • 打赏
  • 举报
回复
Taken 2003-10-23
var
i: Integer;
sl: TStringList;
s: String; //你的字符串
begin
sl := TStringList.Create;
with sl do
try
LoadFromFile('你的文件.txt');
for i:=0 to Count-1 do
s := sl[i]; //获取本行字符串
finally
Free;
end;
end;
  • 打赏
  • 举报
回复
pilicat 2003-10-22
声明一个整型的全局变量CurLine

var
instring:string;
s:textfile;
i:integer;
begin
assignfile(s,'d:\abc.asm');
reset(s);
i:=1;
while not eof(s) do
begin
readln(s,instring);
if i=CurLine then
begin
inc(CurLine);
exit;
end;
inc(i);
end;
closefile(s);
edit1.Text:=instring;
end;
  • 打赏
  • 举报
回复
ahjoe 2003-10-22
var
instring:string;
s:textfile;
begin
assignfile(s,'d:\abc.asm');
reset(s);
while not eof(s) do
begin
readln(s,instring);
memo1.lines.Add(instring);
end;
closefile(s);
end;
  • 打赏
  • 举报
回复
hawind 2003-10-22
不是这个意思。
这样的话就把所有的行一起输出了。
我要的结果是第一次执行时输出第一行。
第二次执行时输出第二行了。
。。。。
以此类推!
  • 打赏
  • 举报
回复
vagerent 2003-10-22
用循环
while not s.eof do
begin
readln(s,instring);
end;
  • 打赏
  • 举报
回复
相关推荐
发帖
Windows SDK/API
加入

1168

社区成员

Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
申请成为版主
帖子事件
创建了帖子
2003-10-22 05:45
社区公告
暂无公告