文章里面有文字(中文,英文),有图片,超级链接。打算用RIchedit,或者RXrichedit组件。我想能够把它们存储成二进制的文件,可以把这个二进制的文件打开。
学了一段时间的流操作,总是学不会,因此希望高手能够写一个小程序,将源代码给我,能够实现上面的效果,小弟愿意200分相送。当然希望存储后的文件越小越好。分不够小弟愿意再加。只求能够得到这段代码。
不胜感激。
学了一段时间的流操作,总是学不会,因此希望高手能够写一个小程序,将源代码给我,能够实现上面的效果,小弟愿意200分相送。当然希望存储后的文件越小越好。分不够小弟愿意再加。只求能够得到这段代码。
不胜感激。
长度有限制。
你可以先把RichEdit的内容保存到一个临时的文件,也可以使用Stream实现。下面是相关
的过程。
procedure SaveRichEditBlobField(FieldName: string; DataSet: TDataSet;
RichEdit: TRichEdit);
var
MemoStream: TMemoryStream;
Blob: TStream;
begin
if RichEdit.Lines.Count = 0 then
begin
Exit;
end;
Screen.Cursor := crHourGlass;
MemoStream := TMemoryStream.Create;
try
RichEdit.Lines.SaveToStream(MemoStream);
MemoStream.Seek(0,soFromBeginning);
Blob := DataSet.CreateBlobStream(DataSet.FieldByName(FieldName),bmWrite);
try
Blob.Seek(0,soFromBeginning);
Blob.CopyFrom(MemoStream,MemoStream.Size);
finally
Blob.Free;
end;
finally
MemoStream.Free;
Screen.Cursor := crDefault;
end;
end;procedure LoadRichEditFromBlobField(FieldName: string; DataSet: TDataSet;
RichEdit: TRichEdit);
var
Blob: TStream;
begin
if DataSet.FieldByName(FieldName).IsNull then
begin
Exit;
end;
Screen.Cursor := crHourGlass;
Blob := TMemoryStream.Create;
try
TBlobField(DataSet.FieldByName(FieldName)).SaveToStream(Blob);
Blob.Seek(0, soFromBeginning);
if Blob.Size = 0 then
begin
Exit;
end;
RichEdit.LoadFromStream(Blob);
finally
Blob.Free;
Screen.Cursor := crDefault;
end;
end;
把Richedit中的文字,图片了之类的都存放到文件中去。