亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 054.htm

?? delphi編程
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
face="宋體" lang="ZH-CN">對象多了一個</font><font face="Arial">FButPos</font><font
face="宋體" lang="ZH-CN">的編移量。</p>
<p>  </font><font face="Arial">2. Defineproperty</font><font face="宋體"
lang="ZH-CN">和</font><font face="Arial">DefineBinaryproperty</font><font face="宋體"
lang="ZH-CN">方法的實現</font><font face="Arial"></p>
<p></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">和</font><font face="Arial">TWriter</font><font
face="宋體" lang="ZH-CN">對象中才有具體的實現。</p>
<p>  它們在</font><font face="Arial">TReader</font><font face="宋體" lang="ZH-CN">中的實現如下:</p>
<p>  </p>
<p></font><font face="Arial">procedure TReader.DefineProperty(const Name: string;
ReadData: TReaderProc; </p>
<p>WriteData: TWriterProc; HasData: Boolean);</p>
<p>begin</p>
<p>if CompareText(Name, FPropName) = 0 then</p>
<p>begin</p>
<p>ReadData(Self);</p>
<p>FPropName := '';</p>
<p>end;</p>
<p>end;</p>
<p></font> <font face="Arial"></p>
<p>procedure TReader.DefineBinaryProperty(const Name: string;</p>
<p>ReadData, WriteData: TStreamProc; HasData: Boolean);</p>
<p>var</p>
<p>Stream: TMemoryStream;</p>
<p>Count: Longint;</p>
<p>begin</p>
<p>if CompareText(Name, FPropName) = 0 then</p>
<p>begin</p>
<p>if ReadValue &lt;&gt; vaBinary then</font><font face="宋體" lang="ZH-CN"></p>
<p></font><font face="Arial">begin</font><font face="宋體" lang="ZH-CN"></p>
<p></font><font face="Arial">Dec(FBufPos);</p>
<p>SkipValue;</p>
<p>FCanHandleExcepts := True;</p>
<p>PropValueError;</p>
<p>end;</p>
<p>Stream := TMemoryStream.Create;</p>
<p>try</p>
<p>Read(Count, SizeOf(Count));</p>
<p>Stream.SetSize(Count);</p>
<p>Read(Stream.Memory^, Count);</p>
<p>FCanHandleExcepts := True;</p>
<p>ReadData(Stream);</p>
<p>finally</p>
<p>Stream.Free;</p>
<p>end;</p>
<p>FPropName := '';</p>
<p>end;</p>
<p>end;</p>
<p></font> <font face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">在兩個方法都將</font><font face="Arial">Name</font><font
face="宋體" lang="ZH-CN">參數值與當前的屬性名比較,如果相同則進行讀操作。在</font><font
face="Arial">DefineBinaryproperty</font><font face="宋體" lang="ZH-CN">中,創建了一個內存流。先將數據讀到內存流中然后調用</font><font
face="Arial">ReadData</font><font face="宋體" lang="ZH-CN">讀取數據。</p>
<p>  </font><font face="Arial">3. FlushBuffer</font><font face="宋體" lang="ZH-CN">的實現</p>
<p>  </font><font face="Arial">FlushBuffer</font><font face="宋體" lang="ZH-CN">方法用于清除</font><font
face="Arial">Reader</font><font face="宋體" lang="ZH-CN">對象的內部緩沖區中的內容,保持</font><font
face="Arial">Reader</font><font face="宋體" lang="ZH-CN">對象和流在位置(</font><font
face="Arial">Position</font><font face="宋體" lang="ZH-CN">)上的同步,其實現如下:</p>
<p> </p>
<p></font><font face="Arial">procedure TReader.FlushBuffer;</p>
<p>begin</p>
<p>FStream.Position := FStream.Position - (FBufEnd - FBufPos);</p>
<p>FBufPos := 0;</p>
<p>FBufEnd := 0;</p>
<p>end;</p>
<p></font> <font face="宋體" lang="ZH-CN"></p>
<p>  </font><font face="Arial">4. ReadListBegin</font><font face="宋體" lang="ZH-CN">、</font><font
face="Arial">ReadListEnd</font><font face="宋體" lang="ZH-CN">和</font><font
face="Arial">EndOfList</font><font face="宋體" lang="ZH-CN">方法</p>
<p>  這三個方法都是用于從</font><font face="Arial">Reader</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">EndOfList</font><font face="宋體" lang="ZH-CN">進行判斷。它們是在</font><font
face="Arial">Reader</font><font face="宋體" lang="ZH-CN">對象讀取流中數據時經常用于的。它們的實現如下:</p>
<p> </p>
<p></font><font face="Arial">procedure TReader.ReadListBegin;</p>
<p>begin</p>
<p>CheckValue(vaList);</p>
<p>end;</p>
<p></font> <font face="Arial"></p>
<p>procedure TReader.ReadListEnd;</p>
<p>begin</p>
<p>CheckValue(vaNull);</p>
<p>end;</p>
<p></font> <font face="Arial"></p>
<p>function TReader.EndOfList: Boolean;</font><font face="宋體" lang="ZH-CN"></p>
<p></font><font face="Arial">begin</font><font face="宋體" lang="ZH-CN"></p>
<p></font><font face="Arial">Result := ReadValue = vaNull;</p>
<p>Dec(FBufPos);</p>
<p>end;</p>
<p></font> <font face="宋體" lang="ZH-CN"></p>
<p>  項目表開始標志是</font><font face="Arial">VaList</font><font
face="宋體" lang="ZH-CN">,項目表結束標志是</font><font face="Arial">VaNull</font><font
face="宋體" lang="ZH-CN">,</font><font face="Arial">VaList</font><font face="宋體"
lang="ZH-CN">和</font><font face="Arial">VaNull</font><font face="宋體" lang="ZH-CN">都是枚舉類型</font><font
face="Arial">TValueType</font><font face="宋體" lang="ZH-CN">定義的常量。</p>
<p>  它們實現中調用的</font><font face="Arial">CheckValue</font><font
face="宋體" lang="ZH-CN">是</font><font face="Arial">TReader</font><font face="宋體"
lang="ZH-CN">的私有方法,其實現如下:</p>
<p> </p>
<p></font><font face="Arial">procedure TReader.CheckValue(Value: TValueType);</p>
<p>begin</p>
<p>if ReadValue &lt;&gt; Value then</p>
<p>begin</p>
<p>Dec(FBufPos);</p>
<p>SkipValue;</p>
<p>PropValueError;</p>
<p>end;</p>
<p>end;</p>
<p></font> <font face="宋體" lang="ZH-CN"></p>
<p>  </font><font face="Arial">CheckValue</font><font face="宋體" lang="ZH-CN">方法的功能是檢測緊接著要讀的值是否是</font><font
face="Arial">Value</font><font face="宋體" lang="ZH-CN">指定的類型。如果不是則跳過該項目并觸發一個</font><font
face="Arial">SInvalidPropertyValue</font><font face="宋體" lang="ZH-CN">錯誤。</p>
<p>  </font><font face="Arial">EndOfList</font><font face="宋體" lang="ZH-CN">函數只是簡單地判斷下一字節是否是</font><font
face="Arial">VaNull</font><font face="宋體" lang="ZH-CN">將判斷結果返回,并將字節移回原來位置。</p>
<p>  </font><font face="Arial">5. </font><font face="宋體" lang="ZH-CN">簡單數據類型讀方法的實現</p>
<p>  簡單數據類型指的是布爾型、字符型、整型、字符串型、浮點型、集合類型和標識符。將它們放在一起介紹是因為它們的實現方法類似。</p>
<p>  因為它們的實現都用到了</font><font face="Arial">ReadValue</font><font
face="宋體" lang="ZH-CN">方法,因此先來介紹</font><font face="Arial">ReadValue</font><font
face="宋體" lang="ZH-CN">方法的實現:</p>
<p> </p>
<p></font><font face="Arial">function TReader.ReadValue: TValueType;</p>
<p>begin</p>
<p>Read(Result, SizeOf(Result));</p>
<p>end; </p>
<p></font> <font face="宋體" lang="ZH-CN"></p>
<p>  該方法調用私有方法</font><font face="Arial">Read</font><font
face="宋體" lang="ZH-CN">,從</font><font face="Arial">Reader</font><font
face="宋體" lang="ZH-CN">對象流中讀一個字節,并移動位置指針。</p>
<p>  </font><font face="Arial">ReadValue</font><font face="宋體" lang="ZH-CN">方法專門從流中讀取值的類型的,所有的數據讀寫方法中在讀取數據前都要調用</font><font
face="Arial">ReadValue</font><font face="宋體" lang="ZH-CN">方法判斷是否是所要讀的數據。如果是,則調用</font><font
face="Arial">Read</font><font face="宋體" lang="ZH-CN">方法讀取數據;否則觸發一個異常事件,下面看</font><font
face="Arial">Integer</font><font face="宋體" lang="ZH-CN">類型的讀方法:</p>
<p> </p>
<p></font><font face="Arial">function TReader.ReadInteger: Longint;</p>
<p>var</p>
<p>S: Shortint;</p>
<p>I: Smallint;</p>
<p>begin</p>
<p>case ReadValue of</p>
<p>vaInt8:</p>
<p>begin</p>
<p>Read(S, SizeOf(Shortint));</p>
<p>Result := S;</p>
<p>end;</p>
<p>vaInt16:</p>
<p>begin</p>
<p>Read(I, SizeOf(I));</p>
<p>Result := I;</p>
<p>end;</p>
<p>vaInt32:</p>
<p>Read(Result, SizeOf(Result));</p>
<p>else</p>
<p>PropValueError;</p>
<p>end;</p>
<p>end;</p>
<p></font> <font face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">因為</font><font face="Arial">Delphi 2.0</font><font
face="宋體" lang="ZH-CN">中,整型可分</font><font face="Arial">8</font><font
face="宋體" lang="ZH-CN">位、</font><font face="Arial">16</font><font face="宋體"
lang="ZH-CN">位和</font><font face="Arial">32</font><font face="宋體" lang="ZH-CN">位,因此讀取整型數據時分別作了判斷。</p>
<p>  布爾類型的數據是直接放在值類型標志上,如果類型為</font><font
face="Arial">VaTrue</font><font face="宋體" lang="ZH-CN">,則值為</font><font
face="Arial">True</font><font face="宋體" lang="ZH-CN">;如果類型為</font><font
face="Arial">VaFalse</font><font face="宋體" lang="ZH-CN">,則值為</font><font
face="Arial">False</font><font face="宋體" lang="ZH-CN">。</p>
<p> </p>
<p></font><font face="Arial">function TReader.ReadBoolean: Boolean;</p>
<p>begin</p>
<p>Result := ReadValue = vaTrue;</p>
<p>end;</p>
<p></font> <font face="Arial"></p>
<p>ReadString</font><font face="宋體" lang="ZH-CN">方法也利用</font><font
face="Arial">ReadValue</font><font face="宋體" lang="ZH-CN">方法判斷是字符串還是長字符串。</p>
<p> </p>
<p></font><font face="Arial">function TReader.ReadString: string;</p>
<p>var</p>
<p>L: Integer;</p>
<p>begin</p>
<p>L := 0;</p>
<p>case ReadValue of</p>
<p>vaString:</p>
<p>Read(L, SizeOf(Byte));</p>
<p>vaLString:</p>
<p>Read(L, SizeOf(Integer));</p>
<p>else</p>
<p>PropValueError;</p>
<p>end;</p>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩三级| av午夜一区麻豆| 日本视频免费一区| 天天亚洲美女在线视频| 日韩国产成人精品| 久久99久久久欧美国产| 精品一区二区三区在线视频| 久久av资源站| 丰满白嫩尤物一区二区| 成人av影视在线观看| 91丨九色丨国产丨porny| 色综合久久中文字幕综合网| 在线日韩国产精品| 欧美日韩精品欧美日韩精品| 欧美一区二区三区思思人| 日韩免费在线观看| 国产三级三级三级精品8ⅰ区| 中文字幕精品三区| 亚洲欧美国产三级| 天天综合色天天综合色h| 久久疯狂做爰流白浆xx| 国产成人激情av| 欧洲一区二区av| 日韩一区二区中文字幕| 国产亚洲成av人在线观看导航| 国产精品久久久久7777按摩| 亚洲国产一区在线观看| 九一九一国产精品| 99久久婷婷国产综合精品电影| 欧美亚洲尤物久久| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品毛片久久久久久| 一区二区三区.www| 精品综合久久久久久8888| 成人在线视频首页| 欧美日韩在线三级| 久久色.com| 一区二区三区在线视频免费观看| 免费成人你懂的| 97国产精品videossex| 欧美人伦禁忌dvd放荡欲情| 久久精品夜色噜噜亚洲aⅴ| 依依成人精品视频| 激情另类小说区图片区视频区| 不卡一区在线观看| 日韩欧美中文一区| 成人欧美一区二区三区1314| 日韩二区三区在线观看| 成人高清在线视频| 日韩一区二区三| 亚洲激情第一区| 国产在线精品免费av| 欧美天堂一区二区三区| 久久久久久综合| 亚洲高清免费一级二级三级| 国产福利不卡视频| 91精品国产91综合久久蜜臀| 亚洲欧洲精品一区二区三区不卡| 日日骚欧美日韩| 91丨国产丨九色丨pron| 久久蜜臀中文字幕| 日韩国产欧美在线观看| 色综合视频一区二区三区高清| 欧美变态tickle挠乳网站| 一区二区久久久久| av亚洲精华国产精华精华 | 精品国产一区久久| 亚洲午夜久久久久久久久电影网 | 欧美视频一区二区在线观看| 欧美国产视频在线| 麻豆精品久久久| 欧美日韩中文字幕一区二区| 国产精品毛片无遮挡高清| 国产做a爰片久久毛片 | 日韩影院在线观看| 91黄色免费网站| 国产精品电影一区二区三区| 国模冰冰炮一区二区| 日韩视频一区二区| 午夜精品久久久久久久久久久| 91最新地址在线播放| 亚洲国产精品ⅴa在线观看| 国产一区亚洲一区| 精品美女被调教视频大全网站| 日韩精品一级中文字幕精品视频免费观看 | 国产精品久久久一区麻豆最新章节| 日本vs亚洲vs韩国一区三区二区| 在线观看成人小视频| 亚洲精品国产第一综合99久久| eeuss鲁片一区二区三区| 亚洲国产电影在线观看| 国产v综合v亚洲欧| 久久久精品黄色| 国产精品一品视频| 26uuu国产电影一区二区| 久久99国产精品免费| 精品国产乱码久久久久久蜜臀| 全部av―极品视觉盛宴亚洲| 欧美一级一区二区| 美女久久久精品| 日韩午夜激情av| 极品美女销魂一区二区三区| 精品国产伦一区二区三区观看体验 | 亚洲视频 欧洲视频| 成+人+亚洲+综合天堂| **欧美大码日韩| 91亚洲男人天堂| 亚洲免费观看在线视频| 色老汉一区二区三区| 一区二区三区成人在线视频| 欧美日韩一卡二卡| 美国三级日本三级久久99| 欧美不卡一二三| 国产999精品久久久久久| 中文字幕一区二区5566日韩| 在线免费视频一区二区| 午夜欧美一区二区三区在线播放| 欧美一区二区视频在线观看2022 | 91污在线观看| 亚洲一区电影777| 欧美久久久久久蜜桃| 久久se精品一区二区| 亚洲国产电影在线观看| 色香色香欲天天天影视综合网| 亚洲高清三级视频| 精品欧美乱码久久久久久| 国产成人超碰人人澡人人澡| 亚洲三级在线免费| 欧美久久久久久久久| 国产美女在线观看一区| 亚洲私人影院在线观看| 欧美日本韩国一区二区三区视频 | 欧美性猛片aaaaaaa做受| 免费观看91视频大全| 欧美激情在线看| 欧美在线观看视频一区二区三区| 日韩国产欧美在线播放| 欧美极品少妇xxxxⅹ高跟鞋| 一本色道亚洲精品aⅴ| 日本色综合中文字幕| 中文字幕不卡在线播放| 欧美探花视频资源| 国产精品一区二区无线| 亚洲美女淫视频| 精品1区2区在线观看| 色94色欧美sute亚洲线路一ni| 奇米一区二区三区| 最新热久久免费视频| 91精品国产91久久久久久最新毛片 | 蜜桃视频在线一区| 亚洲欧美自拍偷拍| 欧美刺激午夜性久久久久久久| 国产成人欧美日韩在线电影| 亚洲大片免费看| 久久久精品天堂| 欧美日韩高清一区| 99久久婷婷国产综合精品| 毛片一区二区三区| 亚洲黄一区二区三区| 久久久国际精品| 777欧美精品| 91网站视频在线观看| 老司机免费视频一区二区| 亚洲激情图片小说视频| 久久久久久久久久久电影| 欧美日韩aaaaa| a美女胸又www黄视频久久| 久久精品免费观看| 亚洲综合激情网| 中文字幕一区av| 久久久久亚洲综合| 日韩三级电影网址| 欧美日韩久久一区| 色噜噜狠狠色综合中国| 福利一区在线观看| 理论片日本一区| 天天色天天操综合| 亚洲一区二区三区激情| 亚洲三级视频在线观看| 欧美激情一区二区三区四区| 精品国产1区二区| 欧美肥妇bbw| 欧美日韩精品欧美日韩精品一| 91麻豆精品在线观看| www.日本不卡| 国产成人免费在线观看| 久久99精品久久只有精品| 视频在线观看91| 亚洲一区二区影院| 一区二区高清免费观看影视大全 | 丁香婷婷综合色啪| 麻豆精品在线视频| 美腿丝袜一区二区三区| 青青草原综合久久大伊人精品| 婷婷夜色潮精品综合在线| 亚洲不卡av一区二区三区| 亚洲一区二区三区在线播放| 一区二区国产视频| 亚洲一区视频在线| 午夜精品福利在线|