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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 052.htm

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

<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="053.htm"><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="051.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">第二十章 開發(fā)Delphi對象式數(shù)據(jù)管理功能(二)</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<font face="Arial"><p>20.1.6 TResourceStream</font><font face="宋體" lang="ZH-CN">對象 </p>
<p>  </font><font face="Arial">TResourceStream</font><font face="宋體" lang="ZH-CN">對象是另一類</font><font
face="Arial">MemoryStream</font><font face="宋體" lang="ZH-CN">對象,它提供對</font><font
face="Arial">Windows </font><font face="宋體" lang="ZH-CN">應(yīng)用程序資源的訪問,因此稱它為資源流。</font><font
face="Arial">TResourceSream</font><font face="宋體" lang="ZH-CN">也是從</font><font
face="Arial">TCustomMemoryStream </font><font face="宋體" lang="ZH-CN">繼承的。因此在</font><font
face="Arial">TCustomMemoryStream</font><font face="宋體" lang="ZH-CN">對象的基礎(chǔ)上,定義了與指定資源模塊或資源文件建立連接的構(gòu)造方法,并且還覆蓋了</font><font
face="Arial">Write</font><font face="宋體" lang="ZH-CN">,以實(shí)現(xiàn)向資源文件中寫數(shù)據(jù)。</font><font
face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">下面介紹</font><font face="Arial">TResourceStream</font><font
face="宋體" lang="ZH-CN">的實(shí)現(xiàn)</p>
<p>  </font><font face="Arial">1. </font><font face="宋體" lang="ZH-CN">私有域</p>
<p>  </font><font face="Arial">TResourceStream</font><font face="宋體" lang="ZH-CN">沒有定義新的屬性,但它在</font><font
face="Arial">private</font><font face="宋體" lang="ZH-CN">部分定義了兩個數(shù)據(jù)域</font><font
face="Arial">HResInfo</font><font face="宋體" lang="ZH-CN">和</font><font face="Arial">HGlobol</font><font
face="宋體" lang="ZH-CN">和一個私有方法</font><font face="Arial">Initialize</font><font
face="宋體" lang="ZH-CN">,它們的定義如下:</p>
<p> </p>
<p></font><font face="Arial">TResourceStream = class(TCustomMemoryStream)</p>
<p>private</p>
<p>HResInfo: HRSRC;</p>
<p>HGlobal: THandle;</p>
<p>procedure Initialize(Instance: THandle; Name, ResType: PChar);</p>
<p></font><font face="宋體" lang="ZH-CN">…</p>
<p></font><font face="Arial">end;</p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p>  </font><font face="Arial">HRSRC</font><font face="宋體" lang="ZH-CN">是描述</font><font
face="Arial">Windows</font><font face="宋體" lang="ZH-CN">資源信息的結(jié)構(gòu)句柄。</font><font
face="Arial">HGlobal</font><font face="宋體" lang="ZH-CN">變量代表資源所在模塊的句柄。如果操作的是應(yīng)用程序資源,</font><font
face="Arial">HGlohal</font><font face="宋體" lang="ZH-CN">就代表</font><font
face="Arial">EXE</font><font face="宋體" lang="ZH-CN">程序的句柄;如果是動態(tài)鏈接庫(</font><font
face="Arial">DLL</font><font face="宋體" lang="ZH-CN">),則</font><font face="Arial">HGlobal
</font><font face="宋體" lang="ZH-CN">代表動態(tài)鏈接庫的句柄。</font><font
face="Arial">TResourceStream</font><font face="宋體" lang="ZH-CN">對象使用這兩上變量訪問應(yīng)用程序或動態(tài)鏈接庫中的資源。</p>
<p>  </font><font face="Arial">Initialize</font><font face="宋體" lang="ZH-CN">方法是</font><font
face="Arial">TResourceStream</font><font face="宋體" lang="ZH-CN">對象內(nèi)部使用的。它的構(gòu)造方法</font><font
face="Arial">Create</font><font face="宋體" lang="ZH-CN">和</font><font face="Arial">CreateFromID</font><font
face="宋體" lang="ZH-CN">都是調(diào)用</font><font face="Arial">Initialize</font><font
face="宋體" lang="ZH-CN">方法完成對</font><font face="Arial">TResourceStream</font><font
face="宋體" lang="ZH-CN">的初始化。它的實(shí)現(xiàn)如下:</p>
<p> </p>
<p></font><font face="Arial">procedure TResourceStream.Initialize(Instance: THandle; Name,
ResType: PChar);</p>
<p> </p>
<p>procedure Error;</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">raise EResNotFound.Create(FmtLoadStr(SResNotFound, [Name]));</p>
<p>end;</p>
<p> </p>
<p>begin</p>
<p>HResInfo := FindResource(Instance, Name, ResType);</p>
<p>if HResInfo = 0 then Error;</p>
<p>HGlobal := LoadResource(Instance, HResInfo);</p>
<p>if HGlobal = 0 then Error;</p>
<p>SetPointer(LockResource(HGlobal), SizeOfResource(Instance, HResInfo));</p>
<p>end;</p>
<p> </p>
<p></font><font face="宋體" lang="ZH-CN"> 該方法實(shí)現(xiàn)中,首先調(diào)用</font><font
face="Arial">Windows</font><font face="宋體" lang="ZH-CN">函數(shù)</font><font
face="Arial">FoundResource</font><font face="宋體" lang="ZH-CN">得到由參數(shù)</font><font
face="Arial">Instance</font><font face="宋體" lang="ZH-CN">指定的模塊中的名為</font><font
face="Arial">Name</font><font face="宋體" lang="ZH-CN">和類型為</font><font
face="Arial">ResType</font><font face="宋體" lang="ZH-CN">的資源,然后調(diào)用</font><font
face="Arial">LoadResource</font><font face="宋體" lang="ZH-CN">將資源調(diào)用內(nèi)存,并返回該資源在內(nèi)存中的句柄,最后,將該資源復(fù)制到</font><font
face="Arial">ResourceStream</font><font face="宋體" lang="ZH-CN">中。方法的</font><font
face="Arial">Instance</font><font face="宋體" lang="ZH-CN">參數(shù)代表要調(diào)用的資源所在的模塊句柄。模塊可以是可執(zhí)行文件,也可以是動態(tài)鏈接庫。如果在讀取資源時沒在模塊中發(fā)現(xiàn)要找的資源則產(chǎn)生異常事件。</p>
<p>  </font><font face="Arial">2. </font><font face="宋體" lang="ZH-CN">構(gòu)造方法</font><font
face="Arial">Create</font><font face="宋體" lang="ZH-CN">和</font><font face="Arial">CreateFromID</font><font
face="宋體" lang="ZH-CN"></p>
<p>  這兩個方法在實(shí)現(xiàn)上沒有大的不同。顧名思義,第一個方法是通過資源名構(gòu)造</font><font
face="Arial">TResourceStream; </font><font face="宋體" lang="ZH-CN">第二個方法通過資源</font><font
face="Arial">ID</font><font face="宋體" lang="ZH-CN">構(gòu)造</font><font face="Arial">TResourceStream</font><font
face="宋體" lang="ZH-CN">,而且在實(shí)現(xiàn)過程中,它們都調(diào)用了</font><font
face="Arial">Initialize</font><font face="宋體" lang="ZH-CN">方法。下面是它們的實(shí)現(xiàn):</p>
<p> </p>
<p></font><font face="Arial">constructor TResourceStream.Create(Instance: THandle; const
ResName: string;</p>
<p>ResType: PChar);</p>
<p>begin</p>
<p>inherited Create;</p>
<p>Initialize(Instance, PChar(ResName), ResType);</p>
<p>end;</p>
<p> </p>
<p>constructor TResourceStream.CreateFromID(Instance: THandle; ResID: Integer;</p>
<p>ResType: PChar);</p>
<p>begin</p>
<p>inherited Create;</p>
<p>Initialize(Instance, PChar(ResID), ResType);</p>
<p>end;</p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p>  這兩個方法中都有</font><font face="Arial">Instance</font><font
face="宋體" lang="ZH-CN">參數(shù),該參數(shù)值的含義在</font><font face="Arial">Insitialize</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">TResourceStream</font><font face="宋體" lang="ZH-CN">的</font><font
face="Arial">Write</font><font face="宋體" lang="ZH-CN">方法只完成一件事,就產(chǎn)生這個異常事件,其實(shí)現(xiàn)如下:</p>
<p> </p>
<p></font><font face="Arial">function TResourceStream.Write(const Buffer; Count: Longint):
Longint;</p>
<p>begin</p>
<p>raise EStreamError.CreateRes(SCantWriteResourceStreamError);</p>
<p>end; </p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p>  從方法實(shí)現(xiàn)中可以看到,</font><font face="Arial">TSourceStream</font><font
face="宋體" lang="ZH-CN">對象是不允許寫數(shù)據(jù)的。一旦往資源流中寫數(shù)據(jù)將產(chǎn)生異常事件。</p>
<p>  </font><font face="Arial">4. </font><font face="宋體" lang="ZH-CN">析構(gòu)方法</font><font
face="Arial">Destroy</font><font face="宋體" lang="ZH-CN"></p>
<p>  該方法產(chǎn)生給資源解鎖,然后釋放該資源,最后調(diào)用繼承的</font><font
face="Arial">Destroy</font><font face="宋體" lang="ZH-CN">方法釋放</font><font
face="Arial">ResourceStream</font><font face="宋體" lang="ZH-CN">。其實(shí)現(xiàn)如下:</p>
<p> </p>
<p></font><font face="Arial">destructor TResourceStream.Destroy;</p>
<p>begin</font><font face="宋體" lang="ZH-CN"></p>
<p></font><font face="Arial">UnlockResource(HGlobal);</font><font face="宋體"
lang="ZH-CN"></p>
<p></font><font face="Arial">FreeResource(HResInfo);</p>
<p>inherited Destroy;</p>
<p>end;</p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p>  回顧</font><font face="Arial">Initialize</font><font face="宋體" lang="ZH-CN">方法,我們不難發(fā)現(xiàn):</p>
<p>  ●</font><font face="Arial"> ResourceStream</font><font face="宋體"
lang="ZH-CN">沒有額外地給資源重新分配內(nèi)存,而是直接使用</font><font
face="Arial">HGlobal</font><font face="宋體" lang="ZH-CN">句柄所指</font><font
face="Arial"> </font><font face="宋體" lang="ZH-CN">的內(nèi)存域</p>
<p>  ●</font><font face="Arial"> ResourceStream</font><font face="宋體"
lang="ZH-CN">中的資源在流的生存期,始終是</font><font face="Arial">Lock</font><font
face="宋體" lang="ZH-CN">狀態(tài),因此要根據(jù)</font><font face="Arial">Windows </font><font
face="宋體" lang="ZH-CN">的內(nèi)存使用規(guī)則合理安排</font><font face="Arial">ResourceStream</font><font
face="宋體" lang="ZH-CN">的使用</p>
<p>  ●</font><font face="Arial"> ResourceStream</font><font face="宋體"
lang="ZH-CN">只是用于訪問應(yīng)用程序和動態(tài)鏈接庫中的資源的</p>
<p> </font><font face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">在</font><font face="Arial">Classes</font><font
face="宋體" lang="ZH-CN">在單元中提供了</font><font face="Arial">InternalReadComponentRes</font><font
face="宋體" lang="ZH-CN">函數(shù),該函數(shù)使用了</font><font face="Arial">TResourceStream</font><font
face="宋體" lang="ZH-CN">對象從</font><font face="Arial">Delphi</font><font
face="宋體" lang="ZH-CN">應(yīng)用程序中讀取部件。</font><font face="Arial">Delphi</font><font
face="宋體" lang="ZH-CN">是將窗體和部件信息放在模塊資源的</font><font
face="Arial">RCDATA</font><font face="宋體" lang="ZH-CN">段的。</p>
<p> </font><font face="Arial"></p>
<p>20.1.7 TBlobStream</font><font face="宋體" lang="ZH-CN">對象</p>
<p> </p>
<p>  從</font><font face="Arial">Delphi </font><font face="宋體" lang="ZH-CN">數(shù)據(jù)庫開發(fā)平臺這個意義上說,</font><font
face="Arial">TBlobStream </font><font face="宋體" lang="ZH-CN">對象是個很重要的對象。</font><font
face="Arial">TBlobStream</font><font face="宋體" lang="ZH-CN">對象提供了修改</font><font
face="Arial">TBlobField</font><font face="宋體" lang="ZH-CN">、</font><font
face="Arial">TBytesField</font><font face="宋體" lang="ZH-CN">或</font><font
face="Arial">TVarBytesField</font><font face="宋體" lang="ZH-CN">中數(shù)據(jù)的技術(shù)。開發(fā)者可以象對待文件或流那樣在數(shù)據(jù)庫域中讀寫數(shù)據(jù)。</p>
<p>  傳統(tǒng)數(shù)據(jù)庫發(fā)展的一個重要趨向是往多媒體數(shù)據(jù)庫發(fā)展。目前比較著名和流行的數(shù)據(jù)庫都支持多媒體功能,多媒體數(shù)據(jù)存儲中的一大難點(diǎn)是數(shù)據(jù)結(jié)構(gòu)不規(guī)則,數(shù)據(jù)量大。各大數(shù)據(jù)庫產(chǎn)品是采用</font><font
face="Arial">BLOB</font><font face="宋體" lang="ZH-CN">技術(shù)解決多媒體數(shù)據(jù)存儲中的問題。</font><font
face="Arial">Delphi</font><font face="宋體" lang="ZH-CN">的</font><font face="Arial">TBlobStream</font><font

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粗大黑人巨茎大战欧美成人| 青娱乐精品在线视频| 欧美精品一区二区三区蜜桃视频| 在线亚洲免费视频| 91官网在线观看| 欧美日韩国产另类不卡| 欧美群妇大交群中文字幕| 欧美日韩小视频| 欧美精品乱人伦久久久久久| 欧美一级黄色录像| 2023国产精品| 国产精品久久久久影视| 又紧又大又爽精品一区二区| 天天操天天色综合| 精品亚洲aⅴ乱码一区二区三区| 久久精品久久99精品久久| 裸体健美xxxx欧美裸体表演| 激情小说欧美图片| 成人动漫在线一区| 欧美色图天堂网| 日韩欧美一区电影| 国产精品国产三级国产有无不卡| 中文字幕亚洲欧美在线不卡| 一区二区三区中文在线| 日本怡春院一区二区| 国产精品自拍在线| 91同城在线观看| 欧美一区二区三区视频| 中文字幕国产一区| 婷婷久久综合九色综合伊人色| 捆绑变态av一区二区三区| 国产宾馆实践打屁股91| 色先锋aa成人| 亚洲精品一区在线观看| 亚洲精品日产精品乱码不卡| 秋霞电影网一区二区| av激情亚洲男人天堂| 91精品国产欧美一区二区成人| 欧美激情一区二区三区不卡| 亚洲bt欧美bt精品777| 成人小视频在线| 欧美久久久久久久久中文字幕| 欧美激情在线看| 麻豆视频观看网址久久| 欧美在线观看视频在线| 国产免费成人在线视频| 三级影片在线观看欧美日韩一区二区 | 色老汉av一区二区三区| 精品久久久久久综合日本欧美| 亚洲欧美国产三级| 成人性生交大片免费看在线播放| 91精品国产91久久久久久最新毛片| 国产精品萝li| 国产原创一区二区| 日韩丝袜情趣美女图片| 亚洲一区二区三区四区五区黄| 成人av在线一区二区三区| 欧美成人一级视频| 日本特黄久久久高潮| 欧美日韩国产在线播放网站| 亚洲免费观看高清完整版在线观看熊| 国产原创一区二区三区| 欧美成人三级在线| 日韩高清在线电影| 欧美区在线观看| 爽好久久久欧美精品| 欧美综合在线视频| 亚洲精品国产第一综合99久久| 成人污视频在线观看| 久久久精品tv| 国产成人鲁色资源国产91色综 | 日本一道高清亚洲日美韩| 欧美亚洲动漫精品| 亚洲综合在线免费观看| 91在线视频在线| 亚洲美女在线国产| 欧美专区在线观看一区| 亚洲电影在线免费观看| 欧美午夜精品一区二区蜜桃 | 欧美一区二区三区电影| 91丝袜高跟美女视频| 一区二区三区视频在线看| 免费在线一区观看| 欧美日韩精品一区二区三区四区 | 美女被吸乳得到大胸91| 91精品国产91热久久久做人人| 日韩高清不卡一区二区三区| 67194成人在线观看| 免播放器亚洲一区| 精品美女一区二区三区| 国产一区不卡在线| 中文字幕av不卡| 91小视频在线免费看| 亚洲一区二区欧美激情| 欧美日韩高清在线| 国内精品国产成人国产三级粉色| 久久久久久久久久久久久夜| 成人国产电影网| 一区二区三区中文免费| 欧美一级日韩一级| 国产揄拍国内精品对白| 亚洲精品亚洲人成人网| 91精品国产色综合久久ai换脸 | 91在线精品一区二区| 亚洲一区二区在线观看视频| 日韩午夜激情av| 不卡av电影在线播放| 奇米影视7777精品一区二区| 久久精品视频在线免费观看| 欧美色涩在线第一页| 九九九久久久精品| 一区二区三区四区不卡在线| 2023国产精华国产精品| 在线视频一区二区免费| 国产在线日韩欧美| 性做久久久久久免费观看欧美| 久久久久久久久岛国免费| 欧美亚洲国产一区在线观看网站 | 亚洲综合久久av| 久久综合一区二区| 在线精品观看国产| 成人激情午夜影院| 久久99国产精品免费| 亚洲风情在线资源站| 国产精品久久综合| 欧美一级免费观看| 欧美性猛片aaaaaaa做受| 国产成人在线看| 麻豆国产精品777777在线| 樱桃视频在线观看一区| 国产精品二三区| 国产丝袜在线精品| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美三级在线看| 91毛片在线观看| 99久久婷婷国产综合精品电影| 精品一区二区三区久久| 日韩中文欧美在线| 午夜影视日本亚洲欧洲精品| 亚洲男同性视频| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产精品蜜臀在线观看| 久久综合久色欧美综合狠狠| 欧美三级日韩三级| 在线观看日韩一区| 一本色道久久综合精品竹菊| 成人av在线资源| 成人免费视频视频| 丁香另类激情小说| 成人免费视频免费观看| 丰满白嫩尤物一区二区| 成人蜜臀av电影| 成人av电影在线观看| 成人av在线资源网站| 99精品视频一区二区三区| 9色porny自拍视频一区二区| 成人h精品动漫一区二区三区| 成人在线综合网站| 99r国产精品| 欧美最新大片在线看 | 国产视频视频一区| 国产欧美日韩视频一区二区| 欧美激情一区二区三区在线| 国产精品你懂的| 亚洲综合精品久久| 日韩精品一卡二卡三卡四卡无卡| 人人精品人人爱| 国产91精品一区二区麻豆网站| 懂色av一区二区三区免费观看 | 亚洲午夜精品17c| 日韩激情在线观看| 国产最新精品免费| 99re6这里只有精品视频在线观看| 在线观看视频一区二区欧美日韩| 正在播放亚洲一区| 久久美女艺术照精彩视频福利播放 | 一区二区三区 在线观看视频| 奇米影视在线99精品| 国产高清不卡一区二区| 色噜噜狠狠色综合中国| 欧美一级高清片| 最新国产精品久久精品| 天天影视网天天综合色在线播放| 久久国产欧美日韩精品| 91免费观看在线| 日韩精品一区二区三区在线| 国产精品萝li| 老司机免费视频一区二区| 91色视频在线| 精品久久久久香蕉网| 一区二区免费看| 国产永久精品大片wwwapp | 老司机午夜精品99久久| 91蝌蚪porny成人天涯| 日韩欧美一区二区三区在线| 亚洲欧美另类小说| 国产精品香蕉一区二区三区| 欧美无乱码久久久免费午夜一区 | 亚洲一级在线观看| 精品一区二区三区免费|