X
xue_fg
Unregistered / Unconfirmed
GUEST, unregistred user!
在做序列化保存的过程中,遇到了以下问题:
当打开保存过的文件,在保存一遍的时候,文件会变大(里面的内容重复保存)
代码如下:
保存过程
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 保存了两次,请问为什么?
当打开保存过的文件,在保存一遍的时候,文件会变大(里面的内容重复保存)
代码如下:
保存过程
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 保存了两次,请问为什么?