?? 053.htm
字號:
<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">中覆蓋了這些方法。在后面章節(jié),會介紹這些方法的實現。</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">對象相聯(lián)系的</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">對象內部開設的緩沖區(qū)的大小。</font><font face="Arial">Filer</font><font
face="宋體" lang="ZH-CN">對象內部開設緩沖區(qū)是為了加快數據的讀寫,它的實現如下:</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">對象相聯(lián)的</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">對象內部開設的緩沖區(qū),</font><font face="Arial">FBufSize</font><font
face="宋體" lang="ZH-CN">是內部緩沖區(qū)的大小。</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">大小的動態(tài)內存作為內部緩沖區(qū)。</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">對象的析構函數,它的作用就是釋放動態(tài)內存。</p>
<p> </p>
<p></font><font face="Arial">destructor TFiler.Destroy;</p>
<p>begin</p>
<p>if FBuffer <> 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">對象配合使用將使對象讀寫發(fā)揮巨大作用。</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">屬性表示相關聯(lián)的流中的當前要寫的位置,</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">相關聯(lián)的流中寫入</font><font face="Arial">Count</font><font
face="宋體" lang="ZH-CN">個字節(jié)。</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">判斷是否列表結束,并用循環(huán)語句讀取項目。在調用</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 + -