再现等待,关于序列化保存的奇怪问题

xue_fg 2003-02-11 09:38:38
在做序列化保存的过程中,遇到了以下问题:
当打开保存过的文件,在保存一遍的时候,文件会变大(里面的内容重复保存)
代码如下:
保存过程
if m_pSheet<>nil then
begin
pTempWin:= TPageControl(m_pSheet.PageControl);
m_pSheet.PageControl:=nil;
Writer.WriteBoolean(true);
Writer.WriteComponent(TTabSheet(m_pSheet));

m_pSheet.PageControl:=TPageControl(pTempWin);
end
else
Writer.WriteBoolean(false);

if m_pShadow<>nil then //存储TScrollBox
begin
pTempWin:= TTabSheet(m_pShadow.Parent);
m_pShadow.Parent:=nil;

Writer.WriteBoolean(true);
Writer.WriteComponent(TScrollBox(m_pShadow));

m_pShadow.Parent:=TTabSheet(pTempWin);
end
else
Writer.WriteBoolean(false);
打开过程:
if Reader.ReadBoolean=true then
begin
if m_pSheet<>nil then
m_pSheet.Free;
pTempCmp:=Reader.ReadComponent(nil);
m_pSheet:=TTabSheet(pTempCmp);
end;

if Reader.ReadBoolean=true then
begin
pTempCmp:=Reader.ReadComponent(nil);
m_pShadow:=TScrollBox(pTempCmp);
m_pShadow.Parent:=m_pSheet;
end;
请看保存后的文件:
第一次保存的文件:
TPF0 THWReport HWReportViewd TTabSheet Caption h?
TScrollBox Left Top WidthlHeightvAlignalClientColorclAppWorkSpaceParentColor
打开第一次保存的文件,然后在保存的文件是:
TPF0 THWReport HWReportViewd TTabSheet Caption h?
TScrollBox Left Top WidthlHeight?AlignalClientColorclAppWorkSpaceParentColorTabOrder
TScrollBox Left Top WidthlHeightvAlignalClientColorclAppWorkSpaceParentColor

大家可以看到 TScrollBox 保存了两次,请问为什么?
...全文
33 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
92762724 2003-04-15
  • 打赏
  • 举报
回复
oh
xue_fg 2003-02-13
  • 打赏
  • 举报
回复
why???
xue_fg 2003-02-11
  • 打赏
  • 举报
回复
mei you
idilent 2003-02-11
  • 打赏
  • 举报
回复
一步步的执行,看看是不是它写了两次
xue_fg 2003-02-11
  • 打赏
  • 举报
回复
单步执行跟踪,发现两次保存和大开的过程完全一致,
我很不明白,谁明白,可否告诉我熬?

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧