将文本文件中的空行去掉,代码如何写?(5分)

  • 主题发起人 主题发起人 joann
  • 开始时间 开始时间
J

joann

Unregistered / Unconfirmed
GUEST, unregistred user!
将文本文件中的空行去掉,代码如何写?
 
Var
RF,WF:Textfile;
S:STRING;
begin
AssignFile(RF,'c:/xxx.txt');
AssignFile(WF,'c:/New.txt');
Reset(rf);
ReWrite(wf);
While not eof(RF) do
begin
Readln(RF,S);
if Trim(s)<>'' then Writeln(wf,s);
end;
closeFile(rf);
closefile(wf);
end;
为保证安全,最好还是Try一下

你太小气了,才5分...
 
因为没有环境,不能进行测试,下面代码四个原理。
var
tempLines:TstringList;
begin
tempLines:=TStringList.Create(Self);
tempLines.LoadFromFile('c:/文件全名');
while tempLines.Indexof('')=-1 do
tempLines.delete(tempLines.Indexof(''));
tempLines.SaveToFile('c:/文件全名');
end;
 
var tmp:tstringlist
i:longint
begin
tmp:=tstringlist.create;
tmp.loadfromfile("c:/temp");
for i := tmp.count -1 to 0
if length(trim(tmp)) then tmp.delete(i);
tmp.savetofile;
end
 
del520:实在不好意思?没分了只有5分
您的程序运行在“ReWrite(wf)”出现问题----------“I/O error 32”
 
我来评价一下:
del520的方法太老套,不可用。
555的方法可用但效率太低,每删一行都要重新进行一次搜索。
当然是dz2050的方法最佳。只是有一处错误。向后搜索应该使用downto而不是to。
完整的代码是:
var
I: Integer;
Lines: TStrings;
begin
Lines := TStringList.Create;
try
Lines.LoadFromFile('filename.txt');
for I := Pred(Lines.Count) downto 0 do
if Length(Trim(Lines)) = 0 then
Lines.Delete(I);
Lines.SaveToFile('filename.txt');
finally
Lines.Free;
end;
end;
 
接受答案了.
 
后退
顶部