文本文件的合并,很简单的问题,200分唉!(200分)

  • 主题发起人 主题发起人 张剑波
  • 开始时间 开始时间

张剑波

Unregistered / Unconfirmed
GUEST, unregistred user!
有二个文本文件A.txt、B.txt,行数相等,合并成为一个新的文本文件c.TXT。
第一种合并方法:B.TXT放在A.TXT后面。
第二种合并方法:A.TXT为新文件的奇数行,B.TXT为新文件的偶数行。
请给出原码,谢谢,各100分。
 
COPY A.TXT+B.TXT C.TXT
用TStringList
 
这哪里难?你是懒吧!
下面的不是你需要的,参考一下吧!
...read line-by-line and modify a textfile ?
Author: Sebastian Derdulla
Homepage: http://move.to/sebspace
1 Comment to this tip [Write new comment]
[ Print tip ]


procedure TForm1.Button1Click(Sender: TObject);
var
i,z:integer;
f:textfile;
t:string;
data:array of string;
begin
if opendialog1.execute then
begin
//Read line by line in to the array data
assignfile(f,opendialog1.filename);
reset(f);
z:=0;
setlength(data,0);
//Repeat for each line until end of file
repeat
inc(z);
readln(f,t);
setlength(data,length(data)+length(t));
data[z]:=t;
until eof(f);

setlength(data,length(data)+3*z);
//Add to each line the line number
for i:=1 to z do data:=inttostr(i)+' '+data;
setlength(data,length(data)+2);
//Add a carriage return and line feed
data[1]:=data[1]+#13+#10;
i:=length(data[5]);
data[5]:='';
setlength(data,length(data)-i);
//create a new textfile with the new data
assignfile(f,opendialog1.filename+'2');
rewrite(f);
//write all lines
for i:=1 to z do writeln(f,data);
//save file and close it
CloseFile(f);
end;
end;
 
如果你的文件不是很大,可以考虑用隐藏的TMemo来简单地实现(或者用RichEdit)——

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.LoadFromFile('a.txt');
Memo2.Lines.LoadFromFile('b.txt');
Memo3.Lines.Assign(Memo1.Lines);
Memo3.Lines.AddStrings(Memo2.Lines);
Memo3.Lines.SaveToFile('c.txt');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
I, a, b, c: Integer;
begin
Memo1.Lines.LoadFromFile('a.txt');
Memo2.Lines.LoadFromFile('b.txt');
Memo3.Lines.Clear;
a := Memo1.Lines.Count - 1;
b := Memo2.Lines.Count - 1;
c := Max(a, b);
for I := 0 to c do begin
if I <= a then Memo3.Lines.Add(Memo1.Lines);
if I <= b then Memo3.Lines.Add(Memo2.Lines);
end;
Memo3.Lines.SaveToFile('c.txt');
end;
 
给你发来啦:)
 
var
a,b,c:TStringList;
i:integer;
begin
a:=TstringList.Create;
B:=TstringList.Create;
c:=TstringList.Create;
a.loadFromFile('c:/a.txt');
B.LoadFromFile('C:/b.txt');
a.text:=a.text+b.text;
a.savetofile('C:/C.txt');
for i:=0 to a.count-1 do
begin
c.add(a);
c.add(b);
end;
c.SaveToFile('C:/D.txt');
a.free;
b.free;
d.free;
end;
 
多人接受答案了。
 
后退
顶部