⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 053.htm

📁 Delphi基础知识讲座
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<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 &lt;= 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>  ⑶</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 &lt;&gt; [] 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 + -