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

📄 053.htm

📁 Delphi基础知识讲座
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<p>  在介绍</font><font face="Arial">TReader</font><font face="宋体" lang="ZH-CN">和</font><font
face="Arial">TWriter</font><font face="宋体" lang="ZH-CN">的实现,我们还会看到这几个属性的原理介绍。</p>
<p>  </font><font face="Arial">2. TFiler</font><font face="宋体" lang="ZH-CN">对象方法的实现</p>
<p>  在</font><font face="Arial">TFiler</font><font face="宋体" lang="ZH-CN">对象定义的众多方法中很多都是抽象类方法,没有具体实现。在</font><font
face="Arial">TFiler </font><font face="宋体" lang="ZH-CN">的后继对象</font><font
face="Arial">TReader</font><font face="宋体" lang="ZH-CN">中覆盖了这些方法。在后面章节,会介绍这些方法的实现。</p>
<p>  在</font><font face="Arial">TFiler</font><font face="宋体" lang="ZH-CN">对象中有具体实现的有两个方法</font><font
face="Arial">Create</font><font face="宋体" lang="ZH-CN">和</font><font face="Arial">Destroy</font><font
face="宋体" lang="ZH-CN">。</p>
<p>  ⑴</font><font face="Arial"> Create</font><font face="宋体" lang="ZH-CN">方法的实现</p>
<p>  </font><font face="Arial">Create</font><font face="宋体" lang="ZH-CN">方法是</font><font
face="Arial">TFiler</font><font face="宋体" lang="ZH-CN">的构造方法,它有两个参数</font><font
face="Arial">Stream</font><font face="宋体" lang="ZH-CN">和</font><font face="Arial">BufSize</font><font
face="宋体" lang="ZH-CN">。</font><font face="Arial">Stream</font><font face="宋体"
lang="ZH-CN">是指定与</font><font face="Arial">TFiler</font><font face="宋体"
lang="ZH-CN">对象相联系的</font><font face="Arial">Stream</font><font face="宋体"
lang="ZH-CN">对象,</font><font face="Arial">Filer</font><font face="宋体"
lang="ZH-CN">对象都是用</font><font face="Arial">Stream</font><font face="宋体"
lang="ZH-CN">对象完成具体的读写。</font><font face="Arial">BufSize</font><font
face="宋体" lang="ZH-CN">是</font><font face="Arial">TFiler</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">constructor TFiler.Create(Stream: TStream; BufSize: Integer);</p>
<p>begin</p>
<p>FStream := Stream;</p>
<p>GetMem(FBuffer, BufSize);</p>
<p>FBufSize := BufSize;</p>
<p>end;</p>
<p></font> <font face="宋体" lang="ZH-CN"></p>
<p>  </font><font face="Arial">FStream</font><font face="宋体" lang="ZH-CN">、</font><font
face="Arial">FBuffer</font><font face="宋体" lang="ZH-CN">和</font><font face="Arial">FBufSize</font><font
face="宋体" lang="ZH-CN">都是</font><font face="Arial">TFiler</font><font
face="宋体" lang="ZH-CN">在</font><font face="Arial">private</font><font face="宋体"
lang="ZH-CN">部分定义的数据域。</font><font face="Arial">FStream</font><font
face="宋体" lang="ZH-CN">表示与</font><font face="Arial">Filer</font><font
face="宋体" lang="ZH-CN">对象相联的</font><font face="Arial">Stream</font><font
face="宋体" lang="ZH-CN">对象,</font><font face="Arial">FBuffer</font><font
face="宋体" lang="ZH-CN">指向</font><font face="Arial">Filer</font><font face="宋体"
lang="ZH-CN">对象内部开设的缓冲区,</font><font face="Arial">FBufSize</font><font
face="宋体" lang="ZH-CN">是内部缓冲区的大小。</font><font face="Arial">Create</font><font
face="宋体" lang="ZH-CN">方法用</font><font face="Arial">Stream</font><font
face="宋体" lang="ZH-CN">参数值给</font><font face="Arial">FStream</font><font
face="宋体" lang="ZH-CN">赋值,然后用</font><font face="Arial">GetMem</font><font
face="宋体" lang="ZH-CN">分配</font><font face="Arial">BufSize</font><font
face="宋体" lang="ZH-CN">大小的动态内存作为内部缓冲区。</p>
<p>  ⑵</font><font face="Arial"> Destroy</font><font face="宋体" lang="ZH-CN">方法的实现</p>
<p>  </font><font face="Arial">Destroy</font><font face="宋体" lang="ZH-CN">方法是</font><font
face="Arial">TFiler</font><font face="宋体" lang="ZH-CN">对象的析构函数,它的作用就是释放动态内存。</p>
<p> </p>
<p></font><font face="Arial">destructor TFiler.Destroy;</p>
<p>begin</p>
<p>if FBuffer &lt;&gt; nil then FreeMem(FBuffer, FBufSize);</p>
<p>end;</p>
<p> </p>
<p>20.2.2 TWriter</font><font face="宋体" lang="ZH-CN">对象</p>
<p> </p>
<p>  </font><font face="Arial">TWriter </font><font face="宋体" lang="ZH-CN">对象是可实例化的,往流中写数据的</font><font
face="Arial">Filer</font><font face="宋体" lang="ZH-CN">对象。</font><font
face="Arial">TWriter</font><font face="宋体" lang="ZH-CN">对象直接从</font><font
face="Arial">TFiler</font><font face="宋体" lang="ZH-CN">继承而来,除了覆盖从</font><font
face="Arial">TFiler</font><font face="宋体" lang="ZH-CN">继承的方法外,还增加了大量的关于写各种数据类型</font><font
face="Arial">(</font><font face="宋体" lang="ZH-CN">如</font><font face="Arial">Integer</font><font
face="宋体" lang="ZH-CN">、</font><font face="Arial">String</font><font face="宋体"
lang="ZH-CN">和</font><font face="Arial">Component</font><font face="宋体" lang="ZH-CN">等</font><font
face="Arial">)</font><font face="宋体" lang="ZH-CN">的方法。</font><font
face="Arial">TWriter</font><font face="宋体" lang="ZH-CN">对象和</font><font
face="Arial">TReader </font><font face="宋体" lang="ZH-CN">对象配合使用将使对象读写发挥巨大作用。</p>
<p> </font><font face="Arial"></p>
<p>20.2.2.1 TWriter</font><font face="宋体" lang="ZH-CN">对象的属性和方法</p>
<p> </p>
<p>  </font><font face="Arial">1. Position</font><font face="宋体" lang="ZH-CN">属性</p>
<p>  声明:</font><font face="Arial">property Position: Longint; </p>
<p>TWriter</font><font face="宋体" lang="ZH-CN">对象的</font><font face="Arial">Position</font><font
face="宋体" lang="ZH-CN">属性表示相关联的流中的当前要写的位置,</font><font
face="Arial">TReader </font><font face="宋体" lang="ZH-CN">对象也有这个属性,但与</font><font
face="Arial">TReader</font><font face="宋体" lang="ZH-CN">对象不同的是</font><font
face="Arial">TWriter</font><font face="宋体" lang="ZH-CN">对象的</font><font
face="Arial">Position</font><font face="宋体" lang="ZH-CN">的值比流的</font><font
face="Arial">Position</font><font face="宋体" lang="ZH-CN">值小,这一点一看属性实现就清楚了。</p>
<p>  </font><font face="Arial">2. RootAncesstor</font><font face="宋体" lang="ZH-CN">属性</p>
<p>  声明:</font><font face="Arial">property RootAncestor: TComponent; </p>
<p>RootAncestor</font><font face="宋体" lang="ZH-CN">属性表示的是</font><font
face="Arial">Root</font><font face="宋体" lang="ZH-CN">属性所指的部件的祖先。如果</font><font
face="Arial">Root </font><font face="宋体" lang="ZH-CN">是继承的窗体,</font><font
face="Arial">Writer</font><font face="宋体" lang="ZH-CN">对象将窗体拥有部件与祖先窗体中的相应部件依次比较,然后只写入那些与祖先中的不同的部件。</p>
<p>  </font><font face="Arial">3. Write</font><font face="宋体" lang="ZH-CN">方法</p>
<p>  声明:</font><font face="Arial">procedure Write(const Buf; Count: Longint); </p>
<p>Write</font><font face="宋体" lang="ZH-CN">方法从</font><font face="Arial">Buf</font><font
face="宋体" lang="ZH-CN">中往与</font><font face="Arial">Writer</font><font
face="宋体" lang="ZH-CN">相关联的流中写入</font><font face="Arial">Count</font><font
face="宋体" lang="ZH-CN">个字节。</p>
<p>  </font><font face="Arial">4. WriteListBegin</font><font face="宋体"
lang="ZH-CN">方法</p>
<p>  声明:</font><font face="Arial">procedure WriteListBegin; </p>
<p>WriteListBegin</font><font face="宋体" lang="ZH-CN">方法往</font><font
face="Arial">Write</font><font face="宋体" lang="ZH-CN">对象的流中写入项目列表开始标志,该标志意味着后面存储有一连串的项目。</font><font
face="Arial">Reader</font><font face="宋体" lang="ZH-CN">对象,在读这一连串项目时先调用</font><font
face="Arial">ReadListBegin</font><font face="宋体" lang="ZH-CN">方法读取该标志位,然后用</font><font
face="Arial">EndOfList</font><font face="宋体" lang="ZH-CN">判断是否列表结束,并用循环语句读取项目。在调用</font><font
face="Arial">WriteListBegin</font><font face="宋体" lang="ZH-CN">方法的后面必须调用</font><font
face="Arial">WriteListEnd</font><font face="宋体" lang="ZH-CN">方法写列表结束标志,相应的在</font><font
face="Arial">Reader</font><font face="宋体" lang="ZH-CN">对象中有</font><font
face="Arial">ReadListEnd</font><font face="宋体" lang="ZH-CN">方法读取该结束标志。</p>
<p>  </font><font face="Arial">5. WriteListEnd</font><font face="宋体" lang="ZH-CN">方法</p>
<p>  声明:</font><font face="Arial">procedure WriteListEnd; </p>
<p>WriteListEnd</font><font face="宋体" lang="ZH-CN">方法在流中,写入项目列表结束标志,它是与</font><font
face="Arial">WriteListBegin</font><font face="宋体" lang="ZH-CN">相匹配的方法。</p>
<p>  </font><font face="Arial">6. WriteBoolean</font><font face="宋体" lang="ZH-CN">方法</p>
<p>  声明:</font><font face="Arial">procedure WriteBoolean(Value: Boolean); </p>
<p>WriteBoolean</font><font face="宋体" lang="ZH-CN">方法将</font><font face="Arial">Value</font><font
face="宋体" lang="ZH-CN">传入的布尔值写入流中。</p>
<p>  </font><font face="Arial">7. WriteChar</font><font face="宋体" lang="ZH-CN">方法</p>
<p>  声明:</font><font face="Arial">procedure WriteChar(Value: char); </p>
<p>WriteChar</font><font face="宋体" lang="ZH-CN">方法将</font><font face="Arial">Value</font><font
face="宋体" lang="ZH-CN">中的字符写入流中。</p>
<p>  </font><font face="Arial">8. WriteFloat</font><font face="宋体" lang="ZH-CN">方法</p>
<p>  声明:</font><font face="Arial">procedure WriteFloat(Value: Extended); </p>
<p>WriteFloat</font><font face="宋体" lang="ZH-CN">方法将</font><font face="Arial">Value</font><font
face="宋体" lang="ZH-CN">传入的浮点数写入流中。</p>
<p>  </font><font face="Arial">9. WriteInteger</font><font face="宋体" lang="ZH-CN">方法</p>
<p>  声明:</font><font face="Arial">procedure WriteInteger(Value: Longint); </p>
<p>WriteInteger</font><font face="宋体" lang="ZH-CN">方法将</font><font face="Arial">Value</font><font
face="宋体" lang="ZH-CN">中的整数写入流中。</p>
<p>  </font><font face="Arial">10. WriteString</font><font face="宋体" lang="ZH-CN">方法</p>
<p>  声明:</font><font face="Arial">procedure WriteString(const Value: string); </p>
<p>WriteString</font><font face="宋体" lang="ZH-CN">方法将</font><font face="Arial">Value</font><font
face="宋体" lang="ZH-CN">中的字符串写入流中。</p>
<p>  </font><font face="Arial">11. WriteIdent</font><font face="宋体" lang="ZH-CN">方法</p>
<p>  声明:</font><font face="Arial">procedure WriteIdent(const Ident: string); </p>
<p>WriteIdent</font><font face="宋体" lang="ZH-CN">方法将</font><font face="Arial">Ident</font><font
face="宋体" lang="ZH-CN">传入的标识符写入流中。</p>
<p>  </font><font face="Arial">12. WriteSignature</font><font face="宋体"
lang="ZH-CN">方法</p>
<p>  声明:</font><font face="Arial">procedure WriteSignature; </p>
<p>WriteSignature</font><font face="宋体" lang="ZH-CN">方法将</font><font
face="Arial">Delphi Filer</font><font face="宋体" lang="ZH-CN">对象标签写入流中。</font><font
face="Arial">WriteRootComponent</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">Reader</font><font face="宋体" lang="ZH-CN">对象在读部件之前调用</font><font
face="Arial">ReadSignature</font><font face="宋体" lang="ZH-CN">方法读取该标签以指导读操作。</p>
<p>  </font><font face="Arial">13. WritComponent</font><font face="宋体"
lang="ZH-CN">方法</p>
<p>  声明:</font><font face="Arial">procedure WriteComponent(Component:
TComponent); </p>
<p>WriteComponent</font><font face="宋体" lang="ZH-CN">方法调用参数</font><font
face="Arial">Component</font><font face="宋体" lang="ZH-CN">的</font><font face="Arial">WriteState</font><font
face="宋体" lang="ZH-CN">方法将部件写入流中。在调用</font><font
face="Arial">WriteState</font><font face="宋体" lang="ZH-CN">之前,</font><font
face="Arial">WriteComponent</font><font face="宋体" lang="ZH-CN">还将</font><font
face="Arial">Component</font><font face="宋体" lang="ZH-CN">的</font><font face="Arial">ComponetnState</font><font
face="宋体" lang="ZH-CN">属性置为</font><font face="Arial">csWriting</font><font
face="宋体" lang="ZH-CN">。当</font><font face="Arial">WriteState</font><font
face="宋体" lang="ZH-CN">返回时再清除</font><font face="Arial">csWriting.</p>
<p>14. WriteRootComponent</font><font face="宋体" lang="ZH-CN">方法</p>
<p>  声明:</font><font face="Arial">procedure WriteRootComponent(Root:
TComponent); </p>
<p>WriteRootComponent</font><font face="宋体" lang="ZH-CN">方法将</font><font
face="Arial">Writer</font><font face="宋体" lang="ZH-CN">对象</font><font face="Arial">Root</font><font
face="宋体" lang="ZH-CN">属性设为参数</font><font face="Arial">Root</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>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -