?? 053.htm
字號:
<p>WriteValue(vaTrue) else</p>
<p>WriteValue(vaFalse);</p>
<p>end;</p>
<p></font> <font face="宋體" lang="ZH-CN"></p>
<p> 與其它數據類型不同的是布爾型數據只使用了標志位是存儲布爾值,在標志位后沒有數據。</p>
<p> </font><font face="Arial">WriteFloat</font><font face="宋體" lang="ZH-CN">方法用于寫入浮點型數據。</p>
<p> </p>
<p></font><font face="Arial">procedure TWriter.WriteFloat(Value: Extended);</p>
<p>begin</p>
<p>WriteValue(vaExtended);</p>
<p>Write(Value, SizeOf(Extended));</p>
<p>end;</p>
<p></font> <font face="宋體" lang="ZH-CN"></p>
<p> 字符串“</font><font face="Arial">True</font><font face="宋體" lang="ZH-CN">”、“</font><font
face="Arial">False</font><font face="宋體" lang="ZH-CN">”和“</font><font
face="Arial">nil</font><font face="宋體" lang="ZH-CN">”作為標識符傳入是由于</font><font
face="Arial">Delphi</font><font face="宋體" lang="ZH-CN">的特殊需要。如果是“</font><font
face="Arial">True</font><font face="宋體" lang="ZH-CN">”、“</font><font
face="Arial">False</font><font face="宋體" lang="ZH-CN">”和“</font><font
face="Arial">nil</font><font face="宋體" lang="ZH-CN">”則寫入</font><font
face="Arial">VaTrue</font><font face="宋體" lang="ZH-CN">、</font><font face="Arial">VaFalse</font><font
face="宋體" lang="ZH-CN">和</font><font face="Arial">VaNil</font><font face="宋體"
lang="ZH-CN">,否則寫入</font><font face="Arial">VaIdent</font><font face="宋體"
lang="ZH-CN">標志,接著以字符串形式寫入標識符。</p>
<p> </font><font face="Arial">WriteString</font><font face="宋體" lang="ZH-CN">方法用于寫入字符串</p>
<p> </p>
<p></font><font face="Arial">procedure TWriter.WriteString(const Value: string);</p>
<p>var</p>
<p>L: Integer;</p>
<p>begin</p>
<p>L := Length(Value);</p>
<p>if L <= 255 then</p>
<p>begin</p>
<p>WriteValue(vaString);</font><font face="宋體" lang="ZH-CN"></p>
<p></font><font face="Arial">Write(L, SizeOf(Byte));</font><font face="宋體"
lang="ZH-CN"></p>
<p></font><font face="Arial">end else</p>
<p>begin</p>
<p>WriteValue(vaLString);</p>
<p>Write(L, SizeOf(Integer));</p>
<p>end;</p>
<p>Write(Pointer(Value)^, L);</p>
<p>end;</p>
<p></font> <font face="宋體" lang="ZH-CN"></p>
<p> </font><font face="Arial">Delphi</font><font face="宋體" lang="ZH-CN">的字符串類型有兩種。一種長度小于</font><font
face="Arial">256</font><font face="宋體" lang="ZH-CN">個字節,另一種長度小于</font><font
face="Arial">65536 </font><font face="宋體" lang="ZH-CN">個字節。</font><font
face="Arial">WriteString</font><font face="宋體" lang="ZH-CN">方法區分這兩類情況存儲字符串,一種設置</font><font
face="Arial">VaStirng</font><font face="宋體" lang="ZH-CN">標志,另一種設置</font><font
face="Arial">VaLString</font><font face="宋體" lang="ZH-CN">。然后存儲字符串的長度值,最后存儲字符串數據。</p>
<p> </font><font face="Arial">WriteChar</font><font face="宋體" lang="ZH-CN">方法用于寫入字符。</p>
<p> </p>
<p></font><font face="Arial">procedure TWriter.WriteChar(Value: Char);</p>
<p>begin</p>
<p>WriteString(Value);</p>
<p>end;</p>
<p></font> <font face="宋體" lang="ZH-CN"></p>
<p> 字符類型的讀寫是用讀寫字符串的方法,在讀的時候,判斷字節數為</font><font
face="Arial">1</font><font face="宋體" lang="ZH-CN">時,則為字符型。</p>
<p> ?、?lt;/font><font face="Arial"> </font><font face="宋體" lang="ZH-CN">部件的寫入</p>
<p> </font><font face="Arial">TWriter</font><font face="宋體" lang="ZH-CN">對象中與寫入部件有關的方法有</font><font
face="Arial">WriteSignature</font><font face="宋體" lang="ZH-CN">、</font><font
face="Arial">WritePrefix</font><font face="宋體" lang="ZH-CN">、</font><font
face="Arial">WriteComponent</font><font face="宋體" lang="ZH-CN">、</font><font
face="Arial">WriteDescendant</font><font face="宋體" lang="ZH-CN">和</font><font
face="Arial">WriteRootComponent</font><font face="宋體" lang="ZH-CN">。</font><font
face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN"> </font><font face="Arial">WriteSignature</font><font
face="宋體" lang="ZH-CN">方法用于往流中寫入</font><font face="Arial">Filer</font><font
face="宋體" lang="ZH-CN">對象標簽。</p>
<p> </p>
<p></font><font face="Arial">procedure TWriter.WriteSignature;</p>
<p>begin</p>
<p>Write(FilerSignature, SizeOf(FilerSignature));</p>
<p>end;</p>
<p></font> <font face="宋體" lang="ZH-CN"></p>
<p> </font><font face="Arial">FilerStgnature</font><font face="宋體" lang="ZH-CN">是字符串常量,其值為“</font><font
face="Arial">TPF0</font><font face="宋體" lang="ZH-CN">”,代表對象標簽。</p>
<p> </font><font face="Arial">WritePrefix</font><font face="宋體" lang="ZH-CN">方法用于在寫入部件前寫入</font><font
face="Arial">ffInherited</font><font face="宋體" lang="ZH-CN">和</font><font
face="Arial">ffChildPos</font><font face="宋體" lang="ZH-CN">標志,這些標志表示部件的繼承特征和創建序值特征。</p>
<p> </p>
<p></font><font face="Arial">procedure TWriter.WritePrefix(Flags: TFilerFlags; AChildPos:
Integer);</p>
<p>var</p>
<p>Prefix: Byte;</p>
<p>begin</p>
<p>if Flags <> [] then</p>
<p>begin</p>
<p>Prefix := $F0 or Byte(Flags);</p>
<p>Write(Prefix, SizeOf(Prefix));</p>
<p>if ffChildPos in Flags then WriteInteger(AChildPos);</p>
<p>end;</p>
<p>end;</p>
<p></font> <font face="宋體" lang="ZH-CN"></p>
<p> 如果</font><font face="Arial">ffChildPos</font><font face="宋體" lang="ZH-CN">置位,則存入部件在</font><font
face="Arial">Owner</font><font face="宋體" lang="ZH-CN">中的創建序值。更詳細的信息請參閱</font><font
face="Arial">TReader</font><font face="宋體" lang="ZH-CN">的</font><font face="Arial">ReadPrefix</font><font
face="宋體" lang="ZH-CN">方法。</p>
<p> </font><font face="Arial">WriteComponent</font><font face="宋體" lang="ZH-CN">方法往流中寫入部件。</p>
<p> </p>
<p></font><font face="Arial">procedure TWriter.WriteComponent(Component: TComponent);</font><font
face="宋體" lang="ZH-CN"></p>
<p> </p>
<p></font><font face="Arial">function FindAncestor(const Name: string): TComponent;</p>
<p>begin</p>
<p></font><font face="宋體" lang="ZH-CN">…</p>
<p></font><font face="Arial">end;</p>
<p> </p>
<p>begin</p>
<p>Include(Component.FComponentState, csWriting);</p>
<p>if Assigned(FAncestorList) then</p>
<p>Ancestor := FindAncestor(Component.Name);</p>
<p>Component.WriteState(Self);</p>
<p>Exclude(Component.FComponentState, csWriting);</p>
<p>end;</p>
<p></font> <font face="宋體" lang="ZH-CN"></p>
<p> 方法中用</font><font face="Arial">Component</font><font face="宋體"
lang="ZH-CN">的</font><font face="Arial">WritState</font><font face="宋體" lang="ZH-CN">方法寫入部件的屬性。在寫入之前將</font><font
face="Arial">Component.FComponentState</font><font face="宋體" lang="ZH-CN">置為</font><font
face="Arial">csWriting</font><font face="宋體" lang="ZH-CN">寫入完后再將</font><font
face="Arial">csWriting</font><font face="宋體" lang="ZH-CN">復位。</p>
<p> </font><font face="Arial">WriteDescendant</font><font face="宋體" lang="ZH-CN">是根據祖先</font><font
face="Arial">AAncestor</font><font face="宋體" lang="ZH-CN">的情況寫入部件</font><font
face="Arial">Root</font><font face="宋體" lang="ZH-CN">。</p>
<p> </p>
<p></font><font face="Arial">procedure TWriter.WriteDescendent(Root: TComponent;
AAncestor: TComponent);</p>
<p>begin</p>
<p>FRootAncestor := AAncestor;</p>
<p>FAncestor := AAncestor;</p>
<p>FRoot := Root;</p>
<p>WriteSignature;</p>
<p>WriteComponent(Root);</p>
<p>end;</p>
<p></font> <font face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">方法先調用</font><font face="Arial">WriteSignature</font><font
face="宋體" lang="ZH-CN">方法寫入</font><font face="Arial">Filer</font><font
face="宋體" lang="ZH-CN">對象標簽。然后調用</font><font face="Arial">WriteComponent</font><font
face="宋體" lang="ZH-CN">將部件</font><font face="Arial">Root</font><font
face="宋體" lang="ZH-CN">寫入流。</p>
<p> </font><font face="Arial">WriteRootComponent</font><font face="宋體"
lang="ZH-CN">方法則是調用</font><font face="Arial">WriteDescendant</font><font
face="宋體" lang="ZH-CN">方法寫入部件,只是將后者的</font><font
face="Arial">Ancestor</font><font face="宋體" lang="ZH-CN">參數以</font><font
face="Arial">nil</font><font face="宋體" lang="ZH-CN">值傳入。 </p>
<p></font><font face="Arial">procedure TWriter.WriteRootComponent(Root: TComponent);</p>
<p>begin</p>
<p>WriteDescendent(Root, nil);</p>
<p>end;</font></p>
<hr color="#EE9B73" size="1" width="94%">
</TD>
<TD CLASS="tt3" VALIGN="bottom" width="8%" background="bg.gif"><strong><A HREF="054.htm" ><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="052.htm" ><FONT style="FONT-SIZE: 9pt">前一頁</font></A><BR>
<A HREF="index.html" ><FONT style="FONT-SIZE: 9pt">回目錄</font></A><BR>
<A HREF="../../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首頁</font></A><BR>
</strong>
</TD>
</TR>
</table>
</BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -