var
instring:string;
s:textfile;
begin
assignfile(s,extractfilepath(application.ExeName)+'text.txt');
reset(s);
readln(s,instring);
edit1.Text:=instring;
end;
我想每次读一行的读出一个文本文件的全部内容!
但上面的语句只能总是读第一行。第二行老是读不出。
怎么把当前的文本指针移到第二行开头呢!
然后下一次再读出第二行的内容呢!
14 个解决方案
#1
用循环
while not s.eof do
begin
readln(s,instring);
end;
while not s.eof do
begin
readln(s,instring);
end;
#2
不是这个意思。
这样的话就把所有的行一起输出了。
我要的结果是第一次执行时输出第一行。
第二次执行时输出第二行了。
。。。。
以此类推!
这样的话就把所有的行一起输出了。
我要的结果是第一次执行时输出第一行。
第二次执行时输出第二行了。
。。。。
以此类推!
#3
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;
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;
#4
声明一个整型的全局变量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;
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;
#5
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;
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;
#6
我觉得是楼上说的对的
用TStringlist来实现 先获得文本的行数 然后读取
用TStringlist来实现 先获得文本的行数 然后读取
#7
TStrings操作方便些 但textfile更底层些
#8
严重同意Taken(铁拳)
一次性读出,而后再处理,即高效,又方便。
一次性读出,而后再处理,即高效,又方便。
#9
//把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;
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;
#10
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;
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;
#11
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;
begin
readln(f);
end;
for i:=CurLine to CurLine+23 do
begin
readln(f,s);
writeln(s);
end;
#12
不要用什么TStringList,对于巨型文件比如几十兆,上百兆的文件,TStringList根本就
无能为力。
无能为力。
#13
》一次性读出,而后再处理,即高效,又方便。
对于一个上百兆的文件,word会一次读出?
对于一个上百兆的文件,word会一次读出?
#14
呵呵!
感谢大家这么帮在下。无柰小弟我积分太少!只能供出屈屈20分。
就这么着吧!平分了,
谢放大家!
感谢大家这么帮在下。无柰小弟我积分太少!只能供出屈屈20分。
就这么着吧!平分了,
谢放大家!
#1
用循环
while not s.eof do
begin
readln(s,instring);
end;
while not s.eof do
begin
readln(s,instring);
end;
#2
不是这个意思。
这样的话就把所有的行一起输出了。
我要的结果是第一次执行时输出第一行。
第二次执行时输出第二行了。
。。。。
以此类推!
这样的话就把所有的行一起输出了。
我要的结果是第一次执行时输出第一行。
第二次执行时输出第二行了。
。。。。
以此类推!
#3
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;
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;
#4
声明一个整型的全局变量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;
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;
#5
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;
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;
#6
我觉得是楼上说的对的
用TStringlist来实现 先获得文本的行数 然后读取
用TStringlist来实现 先获得文本的行数 然后读取
#7
TStrings操作方便些 但textfile更底层些
#8
严重同意Taken(铁拳)
一次性读出,而后再处理,即高效,又方便。
一次性读出,而后再处理,即高效,又方便。
#9
//把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;
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;
#10
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;
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;
#11
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;
begin
readln(f);
end;
for i:=CurLine to CurLine+23 do
begin
readln(f,s);
writeln(s);
end;
#12
不要用什么TStringList,对于巨型文件比如几十兆,上百兆的文件,TStringList根本就
无能为力。
无能为力。
#13
》一次性读出,而后再处理,即高效,又方便。
对于一个上百兆的文件,word会一次读出?
对于一个上百兆的文件,word会一次读出?
#14
呵呵!
感谢大家这么帮在下。无柰小弟我积分太少!只能供出屈屈20分。
就这么着吧!平分了,
谢放大家!
感谢大家这么帮在下。无柰小弟我积分太少!只能供出屈屈20分。
就这么着吧!平分了,
谢放大家!