读书人

如何将2个Richedit的文件流合并写成文

发布时间: 2012-03-02 14:40:28 作者: rapoo

怎么将2个Richedit的文件流合并写成文件问题
近几天碰到一个问题:没有搞过文件流,希望大家帮忙解决

我有五个edit1,edit2,edit3,edit4,edit5
两个Richedit1,Richedit2,
我将5个edit,2个Richedit,用流写到文件中

要求使用Richedit.Lines.SaveToStream();的流加上edit1.text
写入文件

并把文件中的内容读到Richedit和edit.text中

怎么做呀.

[解决办法]
procedure TForm1.Button1Click(Sender: TObject);
var
stm1, stm2: TMemoryStream;
fstm: TFileStream;
iSize: Integer;
I: Integer;
Edit: TEdit;
begin
stm1 := TMemoryStream.Create;
stm2 := TMemoryStream.Create;
fstm := TFileStream.Create( 'c:\ww.txt ',fmCreate);
try
RichEdit1.Lines.SaveToStream(stm1);
RichEdit2.Lines.SaveToStream(stm2);

stm1.Position := 0;
iSize := stm1.Size;
fstm.Write(iSize,SizeOf(Integer));
fstm.CopyFrom(stm1,stm1.Size);

stm2.Position := 0;
iSize := stm2.Size;
fstm.Write(iSize,SizeOf(Integer));
fstm.CopyFrom(stm2,stm2.Size);

for I := 1 to 5 do
begin
Edit := FindComponent( 'Edit '+IntToStr(I)) as TEdit;
if Assigned(Edit) then
begin
iSize := Length(Edit.Text);
fstm.Write(iSize,SizeOf(Integer));
fstm.Write(Edit.Text[1],iSize);
end;
end;
finally
FreeAndNil(stm1);
FreeAndNil(stm2);
FreeAndNil(fstm);
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
RichEdit1.Lines.Clear;
RichEdit2.Lines.Clear;
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
Edit5.Clear;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
stm1, stm2: TMemoryStream;
fstm: TFileStream;
iSize, I: Integer;
pstr: String;
Edit: TEdit;
begin
stm1 := TMemoryStream.Create;
stm2 := TMemoryStream.Create;
fstm := TFileStream.Create( 'c:\ww.txt ',fmOpenRead);
try
fstm.Position := 0;
fstm.Read(iSize,SizeOf(Integer));
stm1.Position := 0;
stm1.CopyFrom(fstm,iSize);
stm1.SaveToFile( 'c:\tmp.txt ');
RichEdit1.Lines.LoadFromFile( 'c:\tmp.txt ');

fstm.Read(iSize,SizeOf(Integer));
stm2.Position := 0;
stm2.CopyFrom(fstm,iSize);
stm2.SaveToFile( 'c:\tmp.txt ');
RichEdit2.Lines.LoadFromFile( 'c:\tmp.txt ');

for I := 1 to 5 do
begin
fstm.Read(iSize,SizeOf(Integer));
SetLength(pstr,iSize);
fstm.Read(pstr[1],iSize);
Edit := FindComponent( 'Edit '+IntToStr(I)) as TEdit;
if Assigned(Edit) then
Edit.Text := pstr;
end;
finally
FreeAndNil(stm1);
FreeAndNil(stm2);
FreeAndNil(fstm);
end;
end;

改过了,哎,你这20分还真不好拿!

读书人网 >.NET

热点推荐