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

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;

我想每次读一行的读出一个文本文件的全部内容!
但上面的语句只能总是读第一行。第二行老是读不出。
怎么把当前的文本指针移到第二行开头呢!
然后下一次再读出第二行的内容呢!
...全文
164 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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(铁拳)
一次性读出,而后再处理,即高效,又方便。
delphi_xizhousheng 2003-10-23
  • 打赏
  • 举报
回复
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;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧