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

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

?? 055.htm

?? delphi教程
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI基礎教程-->第二十章 開發Delphi對象式數據管理功能(五)</TITLE>
<META NAME="keywords" CONTENT=" DELPHI基礎教程 第二十章 開發Delphi對象式數據管理功能(五)">
<META NAME="description" CONTENT=" - DELPHI基礎教程 - 第二十章 開發Delphi對象式數據管理功能(五)">

<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋體"}
.tt2 {font: 12pt/15pt "宋體"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%"  bgcolor="#e0e0e0"><strong><A HREF="index.html"><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="054.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>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷體_GB2312">第二十章 開發Delphi對象式數據管理功能(五)</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<font face="Arial"><p>20.3.1.1</font><font face="宋體" lang="ZH-CN">寫</font><font
face="Arial">DFM</font><font face="宋體" lang="ZH-CN">文件的過程:</font><font
face="Arial">WriteComponentResFie</p>
<p> </font><font face="宋體" lang="ZH-CN">  該過程帶有兩個參數</font><font
face="Arial">FileName</font><font face="宋體" lang="ZH-CN">和</font><font face="Arial">Instance</font><font
face="宋體" lang="ZH-CN">。</font><font face="Arial">FileName</font><font face="宋體"
lang="ZH-CN">參數指定要寫入的</font><font face="Arial">DFM</font><font
face="宋體" lang="ZH-CN">文件名,</font><font face="Arial">Instance</font><font
face="宋體" lang="ZH-CN">參數是</font><font face="Arial">TComponent</font><font
face="宋體" lang="ZH-CN">類型的,它指定要寫入的部件名,一般是</font><font
face="Arial">TForm</font><font face="宋體" lang="ZH-CN">對象的子類。該過程將</font><font
face="Arial">Instance</font><font face="宋體" lang="ZH-CN">部件和其擁有的所有部件寫入</font><font
face="Arial">DFM</font><font face="宋體" lang="ZH-CN">文件。</p>
<p>  這個過程的意義在于,可以在程序運行過程中產生</font><font
face="Arial">Delphi</font><font face="宋體" lang="ZH-CN">的窗體部件和在窗體中插入部件,并由該函數將窗體寫入</font><font
face="Arial">DFM</font><font face="宋體" lang="ZH-CN">文件,支持了動態</font><font
face="Arial">DFM</font><font face="宋體" lang="ZH-CN">文件的重用性。</p>
<p>  該過程的程序是這樣的:</p>
<p> </p>
<p></font><font face="Arial">procedure WriteComponentResFile(const FileName: string;
Instance: TComponent);</p>
<p>var</p>
<p>Stream: TStream;</p>
<p>begin</p>
<p>Stream := TFileStream.Create(FileName, fmCreate);</p>
<p>try</p>
<p>Stream.WriteComponentRes(Instance.ClassName, Instance);</p>
<p>finally</p>
<p>Stream.Free;</p>
<p>end;</p>
<p>end;</p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p>  函數中,用</font><font face="Arial">FileStream</font><font face="宋體"
lang="ZH-CN">創建文件,用</font><font face="Arial">Stream</font><font face="宋體"
lang="ZH-CN">對象的</font><font face="Arial">WriteComponetRes</font><font face="宋體"
lang="ZH-CN">方法將</font><font face="Arial">Instance</font><font face="宋體"
lang="ZH-CN">寫入流中。</p>
<p> </font><font face="Arial"></p>
<p>20.3.1.2 </font><font face="宋體" lang="ZH-CN">讀</font><font face="Arial">DFM</font><font
face="宋體" lang="ZH-CN">文件的函數:</font><font face="Arial">ReadComponentResFile</p>
<p> </p>
<p>ReadComponentResFile</font><font face="宋體" lang="ZH-CN">函數帶有兩個參數</font><font
face="Arial">FileName</font><font face="宋體" lang="ZH-CN">和</font><font face="Arial">Instance</font><font
face="宋體" lang="ZH-CN">。</font><font face="Arial">FileName</font><font face="宋體"
lang="ZH-CN">參數指定要讀</font><font face="Arial">DFM</font><font face="宋體"
lang="ZH-CN">文件名,</font><font face="Arial">Instance</font><font face="宋體"
lang="ZH-CN">參數指定從</font><font face="Arial">DFM</font><font face="宋體"
lang="ZH-CN">文件中要讀的部件。該函數從</font><font face="Arial">DFM</font><font
face="宋體" lang="ZH-CN">文件中將</font><font face="Arial">Instance</font><font
face="宋體" lang="ZH-CN">和它擁有的所有部件,并返回該部件。</p>
<p>  這個函數的意義在于,配合</font><font face="Arial">WriteComponentResFile</font><font
face="宋體" lang="ZH-CN">過程的使用支持</font><font face="Arial">DFM</font><font
face="宋體" lang="ZH-CN">文件的重用性。</p>
<p>  該函數的程序是這樣的:</p>
<p> </p>
<p></font><font face="Arial">function ReadComponentResFile(const FileName: string;
Instance: TComponent): </p>
<p>TComponent;</p>
<p>var</p>
<p>Stream: TStream;</p>
<p>begin</p>
<p>Stream := TFileStream.Create(FileName, fmOpenRead);</p>
<p>try</p>
<p>Result := Stream.ReadComponentRes(Instance);</p>
<p>finally</p>
<p>Stream.Free;</p>
<p>end;</p>
<p>end;</p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p>  程序中使用</font><font face="Arial">FileStream</font><font face="宋體"
lang="ZH-CN">對象打開由</font><font face="Arial">FileName</font><font face="宋體"
lang="ZH-CN">指定的</font><font face="Arial">DFM</font><font face="宋體" lang="ZH-CN">文件,然后用</font><font
face="Arial">Stream</font><font face="宋體" lang="ZH-CN">對象的</font><font
face="Arial">ReadComponentRes</font><font face="宋體" lang="ZH-CN">方法讀出</font><font
face="Arial">Instance</font><font face="宋體" lang="ZH-CN">,并將讀的結果作為函數的返回值。</p>
<p> </font><font face="Arial"></p>
<p>20.3.1.3 </font><font face="宋體" lang="ZH-CN">讀取</font><font face="Arial">Delphi</font><font
face="宋體" lang="ZH-CN">應用程序資源中的部件</p>
<p> </p>
<p>  函數</font><font face="Arial">InternalReadComponentRes</font><font
face="宋體" lang="ZH-CN">可以讀取</font><font face="Arial">Delphi</font><font
face="宋體" lang="ZH-CN">應用程序資源中的部件。</font><font face="Arial">Delphi
</font><font face="宋體" lang="ZH-CN">的</font><font face="Arial">DFM</font><font
face="宋體" lang="ZH-CN">文件在程序經過編譯鏈接后被嵌入應用程序的資源中,而且格式發生了改變,即少了資源文件頭。</font><font
face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">在第一節中曾經介紹過</font><font
face="Arial">TResourceStream</font><font face="宋體" lang="ZH-CN">對象,該對象是操作資源媒介上的數據的。函數</font><font
face="Arial">InternalReadComponentRes</font><font face="宋體" lang="ZH-CN">用了</font><font
face="Arial">TResourceStream</font><font face="宋體" lang="ZH-CN">。程序是這樣的:</p>
<p> </p>
<p></font><font face="Arial">function InternalReadComponentRes(const ResName: string;</p>
<p>var Instance: TComponent): Boolean;</p>
<p>var</p>
<p>HRsrc: THandle;</p>
<p>begin { </font><font face="宋體" lang="ZH-CN">避免“</font><font face="Arial">EResNotFound</font><font
face="宋體" lang="ZH-CN">”異常事件的出現</font><font face="Arial"> }</p>
<p>HRsrc := FindResource(HInstance, PChar(ResName), RT_RCDATA);</p>
<p>Result := HRsrc &lt;&gt; 0;</p>
<p>if not Result then Exit;</p>
<p>FreeResource(HRsrc);</p>
<p>with TResourceStream.Create(HInstance, ResName, RT_RCDATA) do</p>
<p>try</p>
<p>Instance := ReadComponent(Instance);</p>
<p>finally</p>
<p>Free;</p>
<p>end;</p>
<p>Result := True;</p>
<p>end;</p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p>  </font><font face="Arial">HInstance</font><font face="宋體" lang="ZH-CN">是一個</font><font
face="Arial">Delphi VCL</font><font face="宋體" lang="ZH-CN">定義的全局變量,代表當前應用程序的句柄。函數用了資源訪問</font><font
face="Arial">API</font><font face="宋體" lang="ZH-CN">函數</font><font face="Arial">FindResource</font><font
face="宋體" lang="ZH-CN">來測定是否存在</font><font face="Arial">ResName</font><font
face="宋體" lang="ZH-CN">所描述資源。因為在</font><font face="Arial">TResourceStream</font><font
face="宋體" lang="ZH-CN">的創建過程還有</font><font face="Arial">FindResource</font><font
face="宋體" lang="ZH-CN">等操作,所以函數中調用了</font><font face="Arial">FreeResource</font><font
face="宋體" lang="ZH-CN">。最后函數調用了</font><font face="Arial">Stream</font><font
face="宋體" lang="ZH-CN">對象的</font><font face="Arial">ReadComponent</font><font
face="宋體" lang="ZH-CN">方法讀出部件。因為函數的</font><font face="Arial">Instance</font><font
face="宋體" lang="ZH-CN">是</font><font face="Arial">var</font><font face="宋體"
lang="ZH-CN">類型的參數,所以可以訪問</font><font face="Arial">Instance</font><font
face="宋體" lang="ZH-CN">,得到讀出的部件。</p>
<p> </font><font face="Arial"></p>
<p>20.3.1.4 DFM</font><font face="宋體" lang="ZH-CN">文件與標準文本文件</font><font
face="Arial">(TXT</font><font face="宋體" lang="ZH-CN">文件</font><font face="Arial">)</font><font
face="宋體" lang="ZH-CN">的相互轉換</p>
<p> </p>
<p>  在</font><font face="Arial">Delphi</font><font face="宋體" lang="ZH-CN">可視化設計環境中,允許程序員在代碼編輯器中以文本的方式瀏覽和修改</font><font
face="Arial">DFM</font><font face="宋體" lang="ZH-CN">文件內容。當用</font><font
face="Arial">File/Open</font><font face="宋體" lang="ZH-CN">命令直接打開</font><font
face="Arial">DFM</font><font face="宋體" lang="ZH-CN">文件或者選擇窗體設計窗口的彈出式菜單上的</font><font
face="Arial">View as Text</font><font face="宋體" lang="ZH-CN">命令時,就會在編輯器中出現文本形式的信息。我們姑且將這種文本形式稱之為窗體設計腳本。</font><font
face="Arial">Delphi</font><font face="宋體" lang="ZH-CN">提供的這種腳本編輯功能是對</font><font
face="Arial">Delphi</font><font face="宋體" lang="ZH-CN">可視化設計的一大補充。當然這個腳本編輯能力是有限制的,比方說不能在腳本任意地添加和刪除部件,因為代碼和</font><font
face="Arial">DFM</font><font face="宋體" lang="ZH-CN">腳本是緊密相連的,任意添加和修改會導致不一致性。然而在動態生成的</font><font
face="Arial">DFM</font><font face="宋體" lang="ZH-CN">文件中,就不存在這一限制,后面會介紹</font><font
face="Arial">DFM</font><font face="宋體" lang="ZH-CN">動態生成技術的應用。</p>
<p>  實際上,</font><font face="Arial">DFM</font><font face="宋體" lang="ZH-CN">文件內容是二進制數據,它的腳本是經過</font><font
face="Arial">Delphi</font><font face="宋體" lang="ZH-CN">開發環境自動轉化的,而且</font><font
face="Arial">Delphi VCL</font><font face="宋體" lang="ZH-CN">中的</font><font
face="Arial">Classes</font><font face="宋體" lang="ZH-CN">庫單元中提供了在二進制流中的文件</font><font
face="Arial">DFM</font><font face="宋體" lang="ZH-CN">和它的腳本之相互轉化的過程。它們是</font><font
face="Arial">ObjectBinaryToText</font><font face="宋體" lang="ZH-CN">和</font><font
face="Arial">ObjectTextBinary</font><font face="宋體" lang="ZH-CN">、</font><font
face="Arial">ObjectResourceToText</font><font face="宋體" lang="ZH-CN">和</font><font
face="Arial">ObjectTextToResource</font><font face="宋體" lang="ZH-CN">。</font><font
face="Arial"></p>
<p>ObjectBinaryToText</font><font face="宋體" lang="ZH-CN">過程將二進制流中存儲的部件轉化為基于文本的表現形式,這樣就可以用文本處理函數進行處理,還可以用文本編輯器進行查找和替代操作,最后可以將文本再轉化成二進制流中的部件。</p>
<p>  </font><font face="Arial">ObjectBinaryToText</font><font face="宋體"
lang="ZH-CN">過程的主程序是這樣的:</p>
<p> </p>
<p></font><font face="Arial">procedure ObjectBinaryToText(Input, Output: TStream);</p>
<p>var</p>
<p>NestingLevel: Integer;</p>
<p>SaveSeparator: Char;</p>
<p>Reader: TReader;</p>
<p>Writer: TWriter;</p>
<p> </p>
<p>procedure WriteIndent;</p>
<p>const</p>
<p>Blanks: array[0..1] of Char = ' ';</p>
<p>var</p>
<p>I: Integer;</p>
<p>begin</p>
<p>for I := 1 to NestingLevel do Writer.Write(Blanks, SizeOf(Blanks));</p>
<p>end;</p>
<p> </p>
<p>procedure WriteStr(const S: string);</p>
<p>begin</p>
<p>Writer.Write(S[1], Length(S));</p>
<p>end;</p>
<p> </p>
<p>procedure NewLine;</p>
<p>begin</p>
<p>WriteStr(#13#10);</p>
<p>WriteIndent;</p>
<p>end;</p>
<p> </p>
<p>procedure ConvertHeader;</p>
<p>begin</p>
<p></font><font face="宋體" lang="ZH-CN">…</p>
<p></font><font face="Arial">end;</p>
<p> </p>
<p>procedure ConvertBinary;</p>
<p>begin</p>
<p></font><font face="宋體" lang="ZH-CN">…</p>
<p></font><font face="Arial">end;</p>
<p> </p>
<p>procedure ConvertValue;</p>
<p>begin</font><font face="宋體" lang="ZH-CN"></p>
<p>…</p>
<p></font><font face="Arial">end;</p>
<p> </p>
<p>procedure ConvertProperty;</p>
<p>begin</p>
<p></font><font face="宋體" lang="ZH-CN">…</p>
<p></font><font face="Arial">end;</p>
<p> </p>
<p>procedure ConvertObject;</p>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色大人视频| 成人免费在线播放视频| 国产精品系列在线| 无码av中文一区二区三区桃花岛| 国内精品国产成人国产三级粉色| 色婷婷久久综合| 亚洲国产成人一区二区三区| 日本女人一区二区三区| 欧洲一区在线电影| 亚洲色图19p| 欧美日韩在线三区| 亚洲精品ww久久久久久p站 | av在线免费不卡| 精品国产一区二区三区忘忧草 | 国产精品久久久久婷婷| 美女视频黄 久久| 欧美日韩国产高清一区| 一级做a爱片久久| 一本色道亚洲精品aⅴ| 国产精品免费观看视频| 国产成人精品影视| 久久久精品综合| 国产v综合v亚洲欧| 久久欧美中文字幕| 国产99精品在线观看| 日本一区二区动态图| 国产69精品久久久久毛片| 久久综合精品国产一区二区三区| 美女视频黄a大片欧美| 日韩午夜激情av| 蜜臀av性久久久久蜜臀av麻豆| 制服丝袜中文字幕一区| 开心九九激情九九欧美日韩精美视频电影 | 日本一区二区三区免费乱视频| 国产一区二区三区蝌蚪| 欧美激情中文不卡| 97se亚洲国产综合在线| 国内精品自线一区二区三区视频| 欧美成人aa大片| 黑人巨大精品欧美一区| 国产欧美综合色| 色婷婷av一区| 日本网站在线观看一区二区三区 | 国产精品每日更新| 91视频在线看| 亚洲一区二区三区四区的| 欧美午夜精品久久久久久超碰| 视频在线观看一区| www激情久久| 成人av免费网站| 亚洲成人免费视| 日韩免费高清av| 成+人+亚洲+综合天堂| 亚洲精品国产第一综合99久久| 欧美日韩精品一二三区| 国产乱码字幕精品高清av | 91福利社在线观看| 美女视频黄 久久| 1024国产精品| 欧美一区2区视频在线观看| 国产盗摄女厕一区二区三区| 亚洲欧洲一区二区三区| 欧美一区二区三区四区五区 | 日日夜夜精品视频天天综合网| 正在播放亚洲一区| 不卡视频免费播放| 蜜桃一区二区三区在线| 国产精品久线在线观看| 欧美一区二区三区电影| 91小视频在线观看| 另类的小说在线视频另类成人小视频在线 | 亚洲精品日韩一| 337p日本欧洲亚洲大胆精品 | 91网站在线播放| 精品一区二区日韩| 亚洲精品菠萝久久久久久久| 精品欧美久久久| 欧美在线观看你懂的| 国产成人午夜精品5599| 美日韩一区二区| 亚洲自拍与偷拍| 国产精品成人免费在线| 日韩一级完整毛片| 91福利视频在线| 99精品欧美一区二区三区综合在线| 免费看黄色91| 亚洲国产欧美一区二区三区丁香婷| 精品国产麻豆免费人成网站| 欧美精选在线播放| 91在线视频免费91| 国产精品91一区二区| 免费在线视频一区| 亚洲国产欧美在线人成| 亚洲欧美日韩国产一区二区三区| 国产亚洲综合在线| 精品国产91洋老外米糕| 91精品国产91久久综合桃花 | 91麻豆免费在线观看| 国产精品亚洲а∨天堂免在线| 奇米精品一区二区三区四区| 亚洲一区二区在线观看视频| 中文字幕一区在线观看| 国产无一区二区| 欧美精品一区二区久久婷婷| 制服丝袜亚洲精品中文字幕| 欧美日韩国产123区| 欧美性色欧美a在线播放| 色综合天天综合网国产成人综合天| 丁香亚洲综合激情啪啪综合| 国产91露脸合集magnet| 国产大片一区二区| 国产在线精品一区二区不卡了 | www激情久久| 久久久久99精品国产片| 国产人成一区二区三区影院| 久久久亚洲国产美女国产盗摄| 久久蜜臀精品av| 国产欧美一区二区精品性| 国产夜色精品一区二区av| 国产精品污www在线观看| 国产精品久久99| 亚洲精品中文字幕乱码三区| 亚洲综合无码一区二区| 亚洲成人精品在线观看| 免费观看在线色综合| 国产尤物一区二区| 成人av电影在线| 色乱码一区二区三区88| 91精品中文字幕一区二区三区| 日韩欧美一区二区免费| 日本一区免费视频| 亚洲精品视频免费看| 日韩精品三区四区| 久久成人麻豆午夜电影| eeuss鲁一区二区三区| 在线观看日韩一区| 日韩免费观看高清完整版 | 午夜国产不卡在线观看视频| 久久精品国内一区二区三区| 丁香婷婷综合色啪| 欧美图片一区二区三区| 日韩精品专区在线| 日韩伦理免费电影| 日韩av一区二区三区四区| 国产成人精品1024| 欧美日韩在线综合| 久久久影院官网| 亚洲综合免费观看高清完整版 | 天堂蜜桃一区二区三区| 黄网站免费久久| 99精品偷自拍| 日韩精品一区二区三区四区| 中文字幕一区二区三| 日韩激情av在线| 91免费看`日韩一区二区| 欧美成人女星排名| 亚洲精品日韩综合观看成人91| 久久99精品久久久久久| 一本大道av伊人久久综合| 精品美女一区二区三区| 亚洲一本大道在线| www.久久精品| 精品精品国产高清a毛片牛牛 | 成人黄色在线网站| 日韩精品一区二区三区在线播放| 亚洲欧美日韩国产综合在线| 极品少妇xxxx精品少妇| 欧美男男青年gay1069videost| 国产精品嫩草影院com| 捆绑调教一区二区三区| 欧美久久久久久蜜桃| 亚洲美女区一区| 成人av在线影院| 国产亚洲欧美一区在线观看| 人人超碰91尤物精品国产| 色婷婷国产精品久久包臀 | 久久影院午夜片一区| 丝袜美腿亚洲色图| 欧美性色综合网| 亚洲欧美成aⅴ人在线观看| 国产福利不卡视频| xfplay精品久久| 精品中文av资源站在线观看| 精品婷婷伊人一区三区三| 一区二区三区在线免费观看| av综合在线播放| ...av二区三区久久精品| 成人性生交大片免费看视频在线 | 午夜免费久久看| 在线观看精品一区| 一区二区久久久| 欧美性大战久久久久久久蜜臀 | 国产精品综合一区二区三区| 日韩欧美综合在线| 美女视频黄免费的久久 | 亚洲精品在线观| 狠狠色丁香九九婷婷综合五月| 欧美va亚洲va香蕉在线 | 日日骚欧美日韩| 日韩三级视频中文字幕|